我在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的列
提前致谢!
答案 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