有没有办法在实体框架中创建始终应用“where”过滤器的关联?
这是一个例子: 假设我有一个使用“软”删除的数据库 - 所以每个表中都有一个“已删除”列。
因此,如果我有一个与Address(1:0..n)相关的Customer实体,我希望总是在已删除的标志上过滤Addresses导航属性,这样如果我去了Customer.Addresses,该集合将仅返回已删除的地址== 0。
任何人都知道某种方法吗?
答案 0 :(得分:3)
不,没有。
同样的原因是你不能拥有条件外键。
解决方法可能是在地址表中使用TPH:
因此,当您执行ctx.Customer.Include("AddressDeleted").Single()
时,它只会返回标记为已删除的地址。
或者您可以定义与地址的关联,并使用ctx.Customer.Addresses.OfType<AddressDeleted>()
。
这能解决您的问题吗?