質問: 環境: windows10 Visual Studio2017 EntityFramework6.2 MySQL DATA8.10.2 MySQL DATA ENTITY6.10.8 現在ASP.NET MVCの練習としてフルスクラッチでECサイトを作成しております。 MySQL WorkBenchでER図を作り、それを元にEDMファイルを作成できると思います。 作成されたEDMファイルを見るとある程度リレーションはうまくいっていたのですが、一部のリレーションがうまくいっておりません。 EDMファイルを削除し再度作っても同じことであると思うので、コンテキストクラスを書き換えマイグレーションを行いたいです。 自身はASP.NET MVCの他にruby on railsを触っておりこのようなことは行っていたのでおそらく出来ると踏んでいるのですが、ASP.NEt MVCのリファレンスが少ない為質問致しました。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/09678c848bc4c99e31de404aa18cf363.png) これはEDMファイルのリレーションの一部なのですが、orders(注文)テーブルとproucts(製品)テーブルはn対nの関係であるためoredered_products(カート)テーブルのようなものを挟み、注文テーブルとカートテーブルを1対n、productsとorderd_productsを1対nとMySQL WorkBenchのER図で定義し、EDMファイルを作成したのですが以上の画像のようにバグなのか紐づけがされていません。 コンテキストクラスを覗いてみても、 ``` //ECShop.context.cs //ordersテーブルのコンテキストクラス public partial class orders { public int orders_id { get; set; } public int users_id { get; set; } public int payment_id { get; set; } public int total_amount { get; set; } public string date_created { get; set; } public virtual payment payment { get; set; } } //ordered_productsテーブルのコンテキストクラス public partial class ordered_products { public int orders_id { get; set; } public int products_id { get; set; } public int amount { get; set; } } ``` のようにordered_productsテーブルが親、子(railsでいうhas_to、belongs_toですかね)として定義されていませんでした。 テーブルは当然複数あるのですが、ここだけではなくリレーションがうまくいっていない箇所がちらほら見受けられます。 そこでコンテキストクラスをの内容を書き換え、マイグレーションを行いEDMファイルやDBに反映させたいのですがどうすればよいでしょうか? 具体的に分からないのは、コンテクストクラス内にどのようなコードでリレーションを定義すればよいか、またどのようなコマンドをどこで行えばっよいかです。 サンプルサイトのようにコードファーストにおいてのマイグレーションはネットに少し落ちているのですがデータベースファーストの話が一つも見受けられなかったです・・・ 長くなりましたがよろしくお願い致します。(ASP.NET MVCはrailsやcakeのようにコミュニティが活発でなくリファレンスが少ないせいか、初心者には非常に難しく感じます。。。)
回答: DB first で作ったEntity Data Modelを後からいじるのはとてつもなく面倒なので実質出来ないと思ったほうが良いです。 後からいじるためには、Entity Data Model作成の時[データーベースからCode first]を選択してください。 後はほぼCode Firstと一緒ですが、 Enable-Migrationsの後 Add-Migration Initial -IgnoreChanges と-IgnoreChangesオプションが必要です。