我正在使用POCO处理Entity Framework 4.1。 我想映射表Employees:
EmployeeID
LastName
FirstName
ManagerID
IsManager
(使用Employee表中的ManagerID自反关联)
在
EmployeeBase抽象类包含
EmployeeID
LastName
FirstName
当IsManager为false时,Employee类(继承EmployeeBase)包含
ManagerID
当IsManager为真时,Manager类(继承EmployeeBase)
我的问题是,在上下文中,我只有DbSet<EmployeeBase>
。如何生成DbSet<Employee>
和DbSet<Manager>
?
答案 0 :(得分:1)
本文对类似示例进行了详细说明,关键细节称为“每层次表映射”映射:
答案 1 :(得分:1)
对于派生类型,您不能拥有DbSet
。它是继承映射的工作方式。您的基本类型始终只有DbSet
,如果您只想为子类型运行查询,则会使用OfType
扩展方法。
在你的情况下:
var query1 = context.Employees; // returns all employes and managers
var query2 = context.Employees.OfType<Employee>(); // returns only employees
var query3 = context.Employees.OfType<Manager>(); // returns only managers