У меня есть поставщик меню навигации, который я пытаюсь перенести на EF Code First (EF4, CPT5) с помощью объекта MenuItem. Это скорее упражнение для того, чтобы привыкнуть к построению различных отношений с EF Code First, чем к чему-либо еще.
В моем MenuItem есть поле SubMenuItems, которое представляет собой набор элементов MenuItem. Когда я использую EF Code First (без изменения классов), таблица, созданная для MenuItems, добавляет столбец для родительского элемента меню. Меню будет отображаться правильно, но это лишает возможности отображать элемент меню более чем в одном подменю. Как правильно сообщить EF Code First, что я хочу, чтобы каждый элемент меню был отдельным элементом, и создать другую таблицу, которая связывает элементы подменю элемента меню с другими элементами меню?
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. Я уверен, что просто «делаю это неправильно».
Спасибо!