2011-03-23 48 views
0

我正在使用实体框架4.1与POCO。 我想映射表Employees:[EDMX]映射表拆分

EmployeeID 
LastName 
FirstName 
ManagerID 
IsManager 

(在雇员表经理ID自反协会)

EmployeeBase抽象类包含

EmployeeID 
LastName 
FirstName 

和员工类(继承EmployeeBase)IsManager为假时包含

ManagerID 

而且Manager类(继承EmployeeBase)时IsManager的是真实的

我的问题是,在上下文中TT我刚才DbSet<EmployeeBase>。我怎样才能生成DbSet<Employee>DbSet<Manager>

回答

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