我有 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 的 Worker 时,我获取了他的所有车辆,包括我软删除的车辆。如何只检索未删除的车辆?
糟糕的是。 EF 对软删除的支持非常有限。实际上,唯一的可能性是使用条件映射,其中您显式硬编码(不能在运行时更改)到您的映射条件,表示您不想加载具有以下属性的实体:IsDeleted = 0
。检查映射详细信息:
但这会带来非常糟糕的后果:
-
IsDeleted
列无法映射 - 它已经在内部定义了映射
- 即使您想要,您的模型也永远不能用于加载软删除实体
第一个问题可以通过将存储过程映射到删除操作来解决Vehicle
实体和第二个问题可以通过审计和检索已删除实体的单独模型来解决。
此外,代码优先不支持条件映射 - 它需要 EDMX 文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)