[EDMX]映射表拆分

时间:2011-03-23 15:21:36

标签: c# entity-framework poco entity-framework-4.1

我正在使用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>

2 个答案:

答案 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