gpt4 book ai didi

c# - 定义与过滤器的关联?

转载 作者:行者123 更新时间:2023-11-30 16:31:46 25 4
gpt4 key购买 nike

有没有办法在始终应用“where”过滤器的 Entity Framework 中创建关联?

举个例子:假设我有一个使用“软”删除的数据库——因此每个表中都有一个“已删除”列。

因此,如果我有一个与地址 (1:0..n) 相关的客户实体,我希望地址导航属性始终根据已删除标志进行过滤,这样如果我转到 Customer.Addresses,该集合将仅返回已删除 == 0 的地址。

谁知道有什么方法可以做到这一点?

最佳答案

不,没有。

同样的原因你不能有一个条件外键。

解决方法是在 Address 表上使用 TPH:

  • 创建名为Address的抽象实体
  • 创建名为 AddressDeletedAddressNotDeleted
  • 的派生实体
  • 设置鉴别器映射(当 Deleted = 0 时,AddressDeleted 映射到 Address)
  • 在 Customer 和 AddressDeleted 之间创建一个导航属性。

所以当你做 ctx.Customer.Include("AddressDeleted").Single()它只会返回标记为已删除的地址。

或者您可以定义与地址的关联,并使用 ctx.Customer.Addresses.OfType<AddressDeleted>() .

这是否解决了您的问题?

关于c# - 定义与过滤器的关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4622299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com