ASP.NET MVC 4数据库脚手架自引用模型

时间:2013-01-26 19:41:26

标签: asp.net-mvc-4 ef-migrations

我在C#中首先使用代码构建了一个模型。该模型字面上表示网站构建应用程序的容器元素,换句话说,该模型定义Div标签或某些此类HTML元素。就像一个可以包含多个子元素的Div标签一样,我试图在我的模型中表示这个,但DB的脚手架并没有给我我所期望的。

我应该获得一个新的多对多连接表,但是我只在DB中获得一个期望单个int数据类型的列。

以下是模型:

 public class ElementContainer
{
    public int ElementContainerID { get; set; }
    public int PageId { get; set; }
    public int? ParentElementContainerID { get; set; }
    public string ElementContainerName { get; set; }
    public ElementType ElementType { get; set; }
    public string ElementClass { get; set; }
    public PageAsset PageAsset { get; set; } // content of container

    public List<ElementContainer> NestedContainers { get; set; }
}

最后一行是自引用属性,它只显示为名为ElementContainer_ElementContainerID的列

提前致谢!

1 个答案:

答案 0 :(得分:0)

我同意Bahman,DB首先更容易。

虽然我没有尝试过您正在尝试的操作,但您的代码看起来像是一个自我加入,它可以完全按照您的描述进行操作。

这是一对多的关系。 EF导航将拉出所有嵌套子容器的列表。

如果要与EF Code-First建立多对多关系,则应创建另一个实体

 public class ContainerChildren
{
    public int ElementContainerID { get; set; }
    public List<ElementContainer> NestedContainers { get; set; }
}

此引用应该可以帮助您获得确切的想法http://blogs.msdn.com/b/wriju/archive/2011/05/14/code-first-ef-4-1-building-many-to-many-relationship.aspx