2011-03-23 95 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