我想包括所有相關OrganizationPositions時IsActive ==真如何包含特殊的實體...?
this.ObjectContext.Employees.Include("OrganizationPositions")
DB結構
Employee | OrganizationPositions
--------- -------------------------
ID ID , EmployeeID , IsActive
我想包括所有相關OrganizationPositions時IsActive ==真如何包含特殊的實體...?
this.ObjectContext.Employees.Include("OrganizationPositions")
DB結構
Employee | OrganizationPositions
--------- -------------------------
ID ID , EmployeeID , IsActive
Include將加載指定關係的所有實體。根據條件過濾出一些實體是不可能的。
您可以過濾掉手工做實體加盟:
from e in ObjectContext.Employees
join op in ObjectContext.OrganizationPositions
on e.EmployeeID equals op.EmployeeID into g
select new {
Employee = e,
ActivePositions = g.Where(x => x.IsActive)
}
這是真的,但是這段代碼返回了AnonymousType.I需要Employee類型。 – Masoomian
@Masoomian不幸的是,如果您嘗試在查詢中構造員工,您將看到Employee實體無法在Linq to Entities查詢中構造的錯誤。這裏的選項是獲取匿名類型並將其映射到客戶端的實體。 –
這是不可能的。但是,如果您正確聲明瞭導航屬性,並且您確實需要所告知的情況,則可以使用以下代碼:
//...
// First, retrieve all Employees with navigation property
var emps = new ObjectContext.Employees.Include("OrganizationPositions").AsQueryable();
// Then, clear OrganizationPositions of those that aren't active:
foreach (Employee e in emps) {
if (e.IsActive != true)
e.OrganizationPositions.Clear();
}
謝謝親愛的阿明。確實如此,但此代碼從數據庫中提取所有'OrganizationPositions',然後刪除。 – Masoomian
您能否給我們多一點上下文?不是(全部)巫師。 – Thousand
員工表與OrganizationPositions表連接在OrganizationPositions.EmployeeID = Employee.ID,我想在Employee包含OrganizationPositions,但只有IsActive字段爲真的記錄 – Masoomian
@Masoomian您不能只加載相關實體的一部分 - 要麼加入和提取數據手動或包含所有相關實體 –