Я изучаю Entity Framework в приложении asp.net mvc. У меня есть 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;}
}
Я следовал «кодовому принципу», и таблицы были успешно созданы. Но теперь я застрял в том, как заполнять и отображать эту информацию. У меня есть следующие в качестве входных данных: List<AppModel>
List<CategoryModel>
и Dictionary<"appname", List<CategoryModel>>
Как перейти от здесь, так что я могу обновить таблицу сопоставления?
Кроме того, хотелось бы понять, является ли это правильным подходом к представлению данных. Поскольку приложение может иметь несколько категорий - Я ожидаю, что выход как набор уникальных Apps вместе со списком категорий для каждого приложения, что-то вроде:
Dictionary<AppModel, List<CategoryModel>>
Edit: Это то, что я пытался в соответствии с предложение от smoksnes-
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();
После этого, EF работал expeted - 2 категории, 2 приложений и 4 записей в таблице отображения.
Хотя это сработало, но не уверен, кто останавливает EF для создания 4 записей для категорий?
вам нужно Д.О. Класс «App_CategoryModel» вообще? Если вы используете 'ICollection' в 'CategoryModel' и' ICollection 'в' AppModel', EF не будет генерировать промежуточную таблицу? –