Мне нужна помощь в правильном отображении этой структуры в EF 4.1:
public class Menu: Entity
{
public string Title { get; set; }
public virtual ICollection<MenuItem> MenuItems { get; set; }
}
public class MenuItem: Entity
{
public string Icon { get; set; }
public string Text { get; set; }
public string Action { get; set; }
public string Controller { get; set; }
public string Parameters { get; set; }
public virtual MenuItemType Type { get; set; }
public virtual Guid? ContextMenuId { get; set; }
public virtual Menu ContextMenu { get; set; }
public virtual Guid? ParentMenuItemId { get; set; }
public virtual MenuItem ParentMenuItem { get; set; }
public virtual ICollection<MenuItem> ChildMenuItems { get; set; }
}
Базовый класс Entity имеет идентификатор для объектов, и у меня также есть класс базовых сопоставлений, который строит сопоставления для ключа. Вот что у меня есть для класса MenuItem:
public class MenuItemMapping : EntityConfiguration<MenuItem>
{
public MenuItemMapping()
{
HasOptional(mi => mi.ParentMenuItem).WithMany(p => p.ChildMenuItems).HasForeignKey(mi => mi.ParentMenuItemId).WillCascadeOnDelete(false);
HasOptional(mi => mi.ContextMenu).WithMany().HasForeignKey(mi => mi.ContextMenuId).WillCascadeOnDelete(false);
}
}
Меня беспокоит ContextMenu, потому что это тип меню, и я не уверен, что это лучший способ для обработки этого типа.
Обновление
Что ж, я добавил дополнительное отображение для Меню (в классе MenuMapping, аналогичном классу отображения выше) для коллекции Menuitems, и, похоже, все в порядке, но я все же хотел бы знать, что я делаю правильно.