2011-08-12 133 views
1

我有2周的entites:
林我的DB它們看起來像:導航屬性軟刪除實體

Vehicles(Id, VehicleNumber, IsDeleted, WorkerId) 
Workers(Id, Name, Address) 

在我的EDMX:

VehicleId: Id, VehicleNumber, IsDeleted, WorkerId, Worker 
Workers: Id, Name, Address, VehiclesList 

正如你可以看到,車輛的表包含軟刪除的行。現在,當我獲得ID爲2的工人時,我得到了他所有的車輛,包括我被軟刪除的車輛。我怎樣才能檢索未刪除的車輛?

回答

3

不好。 EF對軟刪除的支持非常有限。實際上唯一的可能是在你明確硬編碼(它不能在運行時改變)的情況下使用條件映射到你的映射條件,說你不想加載具有IsDeleted = 0的實體。檢查映射的詳細信息:

enter image description here

但它也有非常不好的後果:

  • IsDeleted列不能映射 - 它已經定義映射內部
  • 你的模型永遠不能被用來裝載軟刪除實體即使你想

第一個問題可以通過映射存儲的親以便刪除Vehicle實體的操作,第二個問題可以通過用於審計和檢索已刪除實體的單獨模型來解決。

條件映射首先不受代碼支持 - 它需要EDMX文件。

1

是否啓用lazyloading?然後嘗試限制的結果與在那裏設置:

worker.VehiclesList.Where(x=>!x.IsDeleted) 

,你也可以把一個條件=請將isDeleted假模型desiner一輛表映射。軟刪除的車輛將不會被收回