Отображение объекта сложного дерева с использованием плавных отображений в EF 4.1? - PullRequest
0 голосов
/ 20 сентября 2011

Мне нужна помощь в правильном отображении этой структуры в 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, и, похоже, все в порядке, но я все же хотел бы знать, что я делаю правильно.

1 Ответ

0 голосов
/ 21 сентября 2011

Видимо, мои отображения были в порядке. Я думал, что у меня будут проблемы с циркулярными ссылками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...