2

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

我应该得到一个新的多对多连接表,但我只在数据库中得到一个需要单个 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 的列

提前致谢!

4

1 回答 1

0

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

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

这是一对多的关系。EF Navigation 将提取所有嵌套子容器的列表。

如果要使用 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-关系.aspx

于 2013-01-26T21:45:10.170 回答