Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架5继承生成为TPT而不是TPH?_Entity Framework_Entity Framework 5 - Fatal编程技术网

Entity framework 实体框架5继承生成为TPT而不是TPH?

Entity framework 实体框架5继承生成为TPT而不是TPH?,entity-framework,entity-framework-5,Entity Framework,Entity Framework 5,我试图实现一个组表所固有的各种表。当我从模型生成数据库时,它显示为每个表的类型,而不是像我所希望的那样的每个继承的类型 我有: 组设置为抽象 当类型(列)=每个表的不同int时,每个组类型表都有条件地映射到组 有人能给我指出正确的方向吗?我需要做什么才能将此更改为每继承类型 编辑:通过注释请求这里是我为组设置的db,并且没有dbset的任何组类型 public DbSet<Group> Groups { get; set; } 另一种类型的团队,将来会有更多,但只有这两种,直到我开

我试图实现一个组表所固有的各种表。当我从模型生成数据库时,它显示为每个表的类型,而不是像我所希望的那样的每个继承的类型

我有:

  • 组设置为抽象
  • 当类型(列)=每个表的不同int时,每个组类型表都有条件地映射到组
  • 有人能给我指出正确的方向吗?我需要做什么才能将此更改为每继承类型

    编辑:通过注释请求这里是我为组设置的db,并且没有dbset的任何组类型

    public DbSet<Group> Groups { get; set; }
    
    另一种类型的团队,将来会有更多,但只有这两种,直到我开始工作

    public partial class HoaAttorney : Group
    {
        public string Address { get; set; }
    }
    

    您应该仅将您的组DBSet用于TPH。
    还要确保没有将表注释添加到poco类中

    您应该只将组DBSet用于TPH。
    还要确保没有将表注释添加到poco类中

    试试看这个博客,它在过去对我有用


    还讨论了
    每类型表(TPT)
    每具体类表(TPC)
    继承

    试试看这个博客,它过去对我很有用

    还讨论了
    每类型表(TPT)
    每具体类表(TPC)
    继承

    当我从模型生成数据库时

    您是否使用模型优先策略?不幸的是,这将使您的模型很难获得TPH继承(这对于代码优先或数据库优先策略来说很容易)

    (代码优先的默认继承映射是TPH,因此您不应该有代码优先的问题。)

    开箱即用TPH不适用于Model First。Model First的默认继承策略是TPT,在Model designer中需要切换到TPH:

    可以先使用模型映射到TPH继承,但是 必须编写自己的数据库生成工作流 复杂的。然后将此工作流分配给数据库 EF设计器中的生成工作流属性。更容易的选择 首先是使用代码

    微软还有一个额外的工具,它支持Model First的TPH数据库生成工作流。但问题是,它看起来没有得到很好的维护(上次更新从2012年5月开始),并且不支持Visual Studio 2012。但是如果你使用VS2010,你可以试试

    当我从模型生成数据库时

    您是否使用模型优先策略?不幸的是,这将使您的模型很难获得TPH继承(这对于代码优先或数据库优先策略来说很容易)

    (代码优先的默认继承映射是TPH,因此您不应该有代码优先的问题。)

    开箱即用TPH不适用于Model First。Model First的默认继承策略是TPT,在Model designer中需要切换到TPH:

    可以先使用模型映射到TPH继承,但是 必须编写自己的数据库生成工作流 复杂的。然后将此工作流分配给数据库 EF设计器中的生成工作流属性。更容易的选择 首先是使用代码


    微软还有一个额外的工具,它支持Model First的TPH数据库生成工作流。但问题是,它看起来没有得到很好的维护(上次更新从2012年5月开始),并且不支持Visual Studio 2012。但是如果您使用VS 2010,您可以试试。

    请显示您的映射有一个非常全面的示例。@lazyberezovsky我的映射在这里,您可以在context@kirsteng将数据库集添加到问题中。谢谢大家到目前为止的帮助。请显示您的映射有一个非常全面的示例。@lazyberezovsky我的映射在这里。您能在context@kirsteng将数据库集添加到问题中。谢谢大家到目前为止的帮助,我似乎还不能让这个工作。我在原来的问题中添加了这些类。谢谢你到目前为止的帮助。我似乎仍然无法让这个工作。我在原来的问题中添加了这些类。谢谢你迄今为止的帮助。这是非常令人失望的发现,但这是我一直在寻找的信息。谢谢你。在一天结束时,我将标记为答案,以便留出一点时间让其他人可能提供其他信息。发现这一点非常令人失望,但这正是我所寻找的信息。谢谢你。向上投票&将在一天结束时标记为答案,以便留出一点时间让其他人可能提供其他信息。
    public partial class HoaManagementCompany : Group
    {
        public string Address { get; set; }
        public string Address2 { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string Zip { get; set; }
    }
    
    public partial class HoaAttorney : Group
    {
        public string Address { get; set; }
    }