gpt4 book ai didi

entity-framework - EF 使用延迟加载过滤子表

转载 作者:行者123 更新时间:2023-12-04 16:38:55 29 4
gpt4 key购买 nike

我正在使用带有 POCO 和存储库模式的 Entity Framework ,我想知道是否有任何方法可以过滤子列表延迟加载。示例:

class Person
{
public virtual Organisation organisation {set; get;}
}
class Organisation
{
public virtual ICollection<Product> products {set; get;}
}
class Product
{
public bool active {set; get;}
}

目前我只有一个 person 存储库,因为我总是从那个点开始,所以理想情况下我想做以下事情:

Person person = personRepo.GetById(Id);
var products = person.organisation.products;

并且只加载数据库中 active = true 的产品。

这可能吗?如果可能的话如何?

编辑 我最好的猜测是可以将过滤器添加到实体的配置中。或者可能有一种方法可以拦截/覆盖延迟加载调用并修改它。显然,如果我创建了一个组织存储库,我可以随意手动加载它,但我正在努力避免这种情况。

最佳答案

没有直接的方法通过延迟加载来做到这一点,但如果您愿意显式加载集合,您可以按照 this blog 中的内容进行操作,请参阅显式加载相关实体时应用过滤器部分。

context.Entry(person)
.Collection(p => p.organisation.products)
.Query()
.Where(u => u.IsActive)
.Load();

关于entity-framework - EF 使用延迟加载过滤子表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12188373/

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