Table Entity Framework 7 beta 4 中的每个类型继承
Table per Type inheritance in Entity Framework 7 beta 4
我正在使用 Entity Framework 7 Beta 4,需要映射到现有数据库。
数据库使用类似于本文的每个类型层次结构 Table (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; }
}
我正在使用 Entity Framework 7 Beta 4,需要映射到现有数据库。
数据库使用类似于本文的每个类型层次结构 Table (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; }
}