我有2个参与者:
我的数据库看起来像是:
Vehicles(Id, VehicleNumber, IsDeleted, WorkerId)
Workers(Id, Name, Address)
在我的edmx中:
VehicleId: Id, VehicleNumber, IsDeleted, WorkerId, Worker
Workers: Id, Name, Address, VehiclesList
如您所见,Vehicles表包含软删除的行。现在,当我得到id = 2的工人时,我得到了他所有的车辆,包括我软删除的车辆。我怎样才能找回未删除的车辆?
答案 0 :(得分:3)
严重。 EF对软删除的支持非常有限。实际上唯一的可能性是使用条件映射,其中您明确地硬编码(在运行时无法更改)到您的映射条件,表示您不想加载具有IsDeleted = 0
的实体。检查映射详细信息:
但它有非常糟糕的后果:
IsDeleted
列无法映射 - 它已经在内部定义了映射第一个问题可以通过将存储过程映射到Vehicle
实体的删除操作来解决,第二个问题可以通过单独的模型来解决,以便审核和检索已删除的实体。
首先,代码不支持条件映射 - 它需要EDMX文件。
答案 1 :(得分:1)
是否启用了延迟加载?然后尝试使用where:
限制结果集worker.VehiclesList.Where(x=>!x.IsDeleted)
您也可以将条件放入模型中的车辆表格映射isdeleted = false。软删除的车辆根本不会被重新启动