相关疑难解决方法(0)

实体框架:每个类型的混合表和每个层次结构的表

我的数据库中有两个表:

  • BaseEntity
  • 基金

"基金"实体从"BaseEtity"继承"每种类型的表".

在我的商业模式中,我有不同类型的"基金":

  • 头基金
  • 直接投资基金
  • 等等

我想为那些具有"每个层次结构的表"的类型使用不同的实体,这意味着我仍然只有一个带有类型鉴别器列的"基金"表.

有没有办法在一个实体上获得"每个层次结构的表",该实体派生自具有"每种类型的表"的基类?

inheritance entity-framework

6
推荐指数
1
解决办法
1912
查看次数

如何在实体框架6中混合使用TPH和TPT?

初步情况

我有一个使用现有数据库的应用程序,目前使用NHibernate作为O/R-Mapper.
现在,我需要使用Code FirstFluent API Configuration迁移到Entity Framework 6.1.1.

但是现在我对部分数据模型有问题,因为它使用不同类型的继承策略(TPT和TPH)

结构体

注意:在这里发布完整的数据模型对我来说似乎有点太大了,所以我在一个小的POC程序中重现了我面临的问题.

CLASS                  | TABLE              | TYPE
-----------------------+--------------------+------
BaseEntity (abstract)  | BaseTable          |
Inherited_TPH          | BaseTable          |  1
Inherited_TPT          | Inherited_TPT      |  2
Run Code Online (Sandbox Code Playgroud)

调用表中用作描述符的列 Type

根据这个答案,我添加了一个抽象类Intermediate_TPH作为中间层:

类和映射图

一些示例数据:带有ID=3类型的条目Inherited_TPT

数据

这些是我的实体类和我的上下文类:

class MyContext : DbContext
{
    public MyContext ( string connectionString )
        : base ( connectionString )
    {
    }

    public DbSet<Inherited_TPH> TPH_Set { get; set; }
    public DbSet<Inherited_TPT> …
Run Code Online (Sandbox Code Playgroud)

c# inheritance entity-framework ef-code-first entity-framework-6

6
推荐指数
1
解决办法
895
查看次数

EF:当抽象基础和一些具体类型在TPH表中并且其他类型有自己的表时,我可以混合TPH和TPT吗?

首先,这些问题类似,但绝对不一样:

我可以在实体框架中混合每个层次结构的表和每种类型的表吗? - 指的是另一种情况.

实体框架:每个类型的混合表和每个层次结构的表 - 另一种情况,尽管接受第一个方案的答案与它无关(*).

(*)其次,当使用每个实体的表映射基本实体时,我在实体框架中成功地混合了每个类型的表和每个层次的表,并且该表具有每个层的表的鉴别符在链条下方.


我试图映射以下内容:

表:

BaseTable
{
    int PK1;
    int PK2;
    string? Value1;
    double? Value2;
}

ChildTable3
{
    int PK1;
    int PK2;
    int Value;
}
Run Code Online (Sandbox Code Playgroud)

实体:

abstract BaseEntity : class // Maps to BaseTable
{
    int PK1; // Maps to PK1 in relevant table
    int PK2; // Maps to PK2 in relevant table
}

Entity1 : BaseEntity // Maps to BaseTable when Value1 != null
{
    string Value; // Maps to Value1
}

Entity2 : …
Run Code Online (Sandbox Code Playgroud)

entity-framework table-per-type entity-framework-4 table-per-hierarchy

2
推荐指数
1
解决办法
1590
查看次数