实体框架7 beta 4中的每类型继承表

时间:2015-05-12 18:10:27

标签: entity-framework asp.net-core entity-framework-core

我使用的是Entity Framework 7 Beta 4,需要映射到现有数据库。

数据库使用类似于本文的表格(http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/implementing-inheritance-with-the-entity-framework-in-an-asp-net-mvc-application

这是一个简单的例子:

public abstract class Person
{
    // SQL Table: Person
    // SQL Columns: PersonId, Name
    public long PersonId { get; set; }
    public string Name { get; set; }
    // This column would contain 'STUDENT' or 'PARENT'
    public string PersonType { get; set; }
}

public class Student : Person
{
    // SQL Table: Person_Student
    // SQL Columns: PersonId, GPA
    public decimal GPA { get; set; }
}

public class Parent : Person
{
    // SQL Table: Person_Parent
    // SQL Columns: PersonID, EmergencyContactNumber
    public string EmergencyContactNumber { get; set; }
}

public class PersonTestDb : DbContext
{
    public DbSet<Person> People { get; set; }
}

尝试查询DbSet时,出现此错误:

表达&#39; [100001]。人们&#39;传递给Include运算符无法绑定。

1 个答案:

答案 0 :(得分:3)

我们仍在继续进行继承。 (参见问题#247。)TPH / STI部分实施,但不是TPT。现在,您可以在表和类之间进行直接映射。类似的东西:

class Person
{
    // Null when Parent
    public Student Student { get; set; }

    // Null when Student
    public Parent Parent { get; set; }
}

class Student
{
    public int PersonId { get; set; }
    public Person Person { get; set; }
}

class Parent
{
    public int PersonId { get; set; }
    public Person Person { get; set; }
}