У меня есть провайдер навигационного меню, который я пытаюсь перейти к EF Code First (EF4, CPT5) с помощью объекта MenuItem. Это скорее упражнение, чтобы освоиться с построением различных отношений с EF Code First, чем с чем-либо еще.
Мой MenuItem имеет поле SubMenuItems, которое является коллекцией MenuItems. Когда я использую EF Code First (без изменения классов), таблица, созданная для MenuItems, добавляет столбец для родительского элемента меню. Меню будет отображаться правильно, но это исключает любую возможность появления пункта меню в нескольких подменю. Как правильно сообщить EF Code: во-первых, я хочу, чтобы каждый MenuItem был отдельным элементом, и создал другую таблицу, которая связывает SubMenuItems элемента меню с другими MenuItems?
public class MenuItem
{
public int ID { get; set; }
public virtual SubMenuItems { get; set; }
public string Text { get; set; }
public string Controller { get; set; }
public string Action { get; set; }
public bool IsRoot { get; set; }
public bool RequiresAuthentication { get; set; }
public virtual ICollection<MenuPermission> RequiredPermissions { get; set; }
public bool HiddenIfAuthenticated { get; set; }
public int DisplayOrder { get; set; }
}
...
public class MyDbContext : DbContext
{
public DbSet<MenuItems> MenuItems { get; set; }
public DbSet<MenuItemPermission> MenuItemPermissions { get; set; }
...
}
Я пытался переопределить OnModelCreating, но каждая попытка заканчивалась либо сбоем, либо выполнением того же действия, что и я, не касаясь OnModelCreating. Я уверен, что я просто "делаю это неправильно".
Спасибо!