實體框架7 beta 4中的每類型繼承表

asp.net-core entity-framework 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時,我收到此錯誤:

傳遞給Include運算符的表達式'[100001] .People'無法綁定。

一般承認的答案

我們仍在繼續進行繼承。 (參見問題#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; }
}



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因