gpt4 book ai didi

.net - Entity Framework - 如何重用查询

转载 作者:行者123 更新时间:2023-12-04 05:34:37 25 4
gpt4 key购买 nike

我创建了一个通用的工作单元/存储库模式,它在大多数情况下都有效。

下面是一个例子:

public IEnumerable<Deal> GetBySubcategory(int subcategoryId)
{
using (var uow = new ReadUow())
{
var r = new ReadRepo<Deal>(uow.Context);

var deals = r.FindBy(d => d.DealSubcategories.Any(s => s.SubcategoryId == subcategoryId))
.Include("DealSubcategories");

return deals.ToList();
}
}

为了将数据的大小保持在最低限度,我尝试过滤每个主要查询。我的问题是,如何使上述内容更具可重用性?

上述方法有一个过滤器,但这可以是 2、3 或更多。如果可能的话,我不想为每个变体创建一个方法,而是尽快为 IEnumerable<T> 创建一个方法。退出上下文,它不再可用而无需调用 ToList()什么的。这意味着此时的所有内容都已实现,即使它可能不会被使用并且只会影响性能。

有没有人像我所描述的那样有扩展这种上下文的经验?

最佳答案

而不是返回 IEnumerable<T> , 返回 IQueryable<T> ,通过省略 .ToList()在您的退货声明中。

但是,您的 DbContext 需要在 HttpRequest 的整个长度内都存在(假设它是一个网站)。

不久前,我做了一个 blog post ,与此有些相关(我认为)。

关于.net - Entity Framework - 如何重用查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12122225/

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