asp.net mvcアプリケーションでEntity Frameworkを学習しています。私は3つのモデルを持っています -Entity Frameworkでナビゲーションプロパティを使用して多対多リレーションシップテーブルを設定する
AppModel、CategoryModelとApp_CategoryModel(AppModelとCategoryModelの間に多くの関係をたくさん指定するため)。このコードは次のとおりです。
public class CategoryModel
{
[Key]
public int id { get; set; }
public string Name {get; set; }
public virtual ICollection<App_CategoryModel> mapping { get; set; }
}
public class AppModel
{
[Key]
public int id { get; set; }
public string Name { get; set; }
public virtual ICollection<App_CategoryModel> mapping { get; set; }
}
public class App_CategoryModel
{
[Key]
public int id {get; set;}
public int AppId {get; set; }
public int CategoryId {get; set; }
public virtual AppModel App {get; set;}
public virtual CategoryModel Category {get; set;}
}
「コードファースト」のアプローチに従っていて、テーブルが正常に作成されました。しかし、今私はこの情報を入力して表示する方法についていません。 I入力データとして、以下があります。 List<AppModel>
List<CategoryModel>
と私はマッピングテーブルを更新できるように
Dictionary<"appname", List<CategoryModel>>
がどのように私はここから上に移動しますか?
また、これがデータを表現する正しい方法であるかどうかを理解したかったと思います。アプリケーションが複数のカテゴリを持つことができますので、 - 私は、各アプリのカテゴリのリストと一緒にユニークなアプリのコレクションとして出力を期待し、何かのように:
Dictionary<AppModel, List<CategoryModel>>
編集: これは私が通り試したものです2種類、2つのアプリケーションとマッピングテーブルに4つのエントリ - この後
List<CategoryModel> cat_list = new List<CategoryModel>();
CategoryModel c1 = new CategoryModel();
c1.Name = "string1";
cat_list.Add(c1);
CategoryModel c2 = new CategoryModel();
c2.Name = "string2";
cat_list.Add(c2);
List<AppModel> app_list = new List<AppModel>();
AppModel a1 = new AppModel();
a1.Name = "app1";
app_list.Add(a1);
AppModel a2 = new AppModel();
a2.Name = "app2";
app_list.Add(a2);
a1.mapping.Add(c1);
a1.mapping.Add(c2);
a2.mapping.Add(c1);
a2.mapping.Add(c2);
db.categories.AddRange(cat_list);
db.apps.AddRange(app_list);
db.SaveChanges();
smoksnes-からの提案は、EFはexpetedとして働きました。
これは機能しましたが、カテゴリの4つのエントリを作成するEFを停止している人はいませんか?
必要です'App_CategoryModel'クラスはまったくですか? 'AppModel'の' CategoryModel'と 'ICollection'で 'ICollection 'を使うと、EFは中間テーブルを生成しませんか? –