使用EF 4.1中的流畅映射映射复杂树对象?

时间:2011-09-20 16:52:25

标签: entity-framework-4.1

我需要一些帮助,了解如何在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基类具有enitties的ID,我还有一个基本映射类,用于构建密钥的映射。以下是我目前为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,因为它是一个菜单类型,并不确定处理这种类型映射的最佳方法。

更新

好吧,我为Menuitems的集合添加了一个额外的Menu(在类似于上面的映射类的MenuMapping类中)的映射,它似乎没问题,但我还是想知道我在做什么是对的。

1 个答案:

答案 0 :(得分:0)

显然,我的映射很好。我以为我会遇到循环引用的问题。