Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/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 实体框架6每个类型的表继承映射保留类型的鉴别器值(未定义)_Entity Framework_Entity Framework 6 - Fatal编程技术网

Entity framework 实体框架6每个类型的表继承映射保留类型的鉴别器值(未定义)

Entity framework 实体框架6每个类型的表继承映射保留类型的鉴别器值(未定义),entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,我有一个项目,我试图使用表每类型继承,源代码 我从一个抽象的基类开始。交易分为几个子类:费用、存款、解除和产权负担。生成的迁移是我所期望的;具有鉴别器列的事务表 在我尝试将数据存储到数据库之前,一切似乎都按预期工作。它使用事务表中的事务值和产权负担表中的其他值按预期对其进行描述。但事务表中的鉴别器值为(未定义) 我不知道如何正确设置。经过几个小时的研究,我发现这是我的一个误解。对于EntityFramework6,有3种将继承链持久化到数据库的方法 每个层次表(TPH)所有数据都存储在一个表中

我有一个项目,我试图使用表每类型继承,源代码

我从一个抽象的基类开始。交易分为几个子类:费用、存款、解除和产权负担。生成的迁移是我所期望的;具有鉴别器列的事务表

在我尝试将数据存储到数据库之前,一切似乎都按预期工作。它使用事务表中的事务值和产权负担表中的其他值按预期对其进行描述。但事务表中的鉴别器值为(未定义)


我不知道如何正确设置。经过几个小时的研究,我发现这是我的一个误解。对于EntityFramework6,有3种将继承链持久化到数据库的方法

  • 每个层次表(TPH)所有数据都存储在一个表中,类型由一个鉴别器列区分。单个查询可用于获取所有类型
  • 每类型表(TPT)数据存储在两个或多个表中,其中基类的公共属性位于主表中。查询被联接到表,然后被联合以区分类型。不需要鉴别器列
  • 每个混凝土类别的表格(TPC)-所有数据都存储在每个类别的单独表格中。查询不需要连接,但仍然需要多个查询
在我的场景中,我有一个TPH和TPT的混合体,它工作得非常好。尽管任何查看它生成的模式的DBA都可能想揍我一顿。因此,最终我暂时选择了TPH,直到我的事务变得不同,足以证明将所有事务都转移到TPT是合理的