2011-08-12 175 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一辆表映射。软删除的车辆将不会被收回