gpt4 book ai didi

c# - 将 OData Queryable 与存储库一起使用?

转载 作者:行者123 更新时间:2023-11-30 22:19:57 26 4
gpt4 key购买 nike

我有这个存储库方法:

public IQueryable<TModel> GetAll()
{
using (var context = new DatabaseContext())
{
return context.Set<TModel>().AsQueryable();
}
}

TModel 是艺术家模型..无论如何

然后我在我的 Controller 中执行此操作:

// GET api/artist
[Queryable]
public IQueryable<ArtistModel> Get()
{
return _repo.GetAll().AsQueryable();
}

现在.. 如果我要更改存储库方法以返回一个 List 并为我的结果添加 .ToList .. 那么这会很好用。但是不管 OData 查询进来什么..我仍然会首先执行“获取所有查询”..将它们变成一个列表然后我会针对该列表执行我的 OData 查询..

这似乎完全错误..我想做的是确保 OData 查询在我尝试从数据库中获取数据的同时执行..所以我只能得到非常具体的结果匹配查询..而不是稍后查询的大量数据..

现在我遇到了 DbContext 的问题,一旦在使用之外就被处理掉了。但我仍然需要关闭 DbContext 以及某些地方,某些方式。 .

有什么想法吗?

最佳答案

Web API 的可查询扩展的最新版本有点令人困惑,因为它与以前的版本大不相同。在新版本中,您需要显式启用可查询支持或使用新的查询选项类。 See this

编辑:一些代码,因为我现在在办公 table 前

public IQueryable<TModel> GetAll(ODataQueryOptions opts)
{
var db = _repo.GetAll();
return (IQueryable<TModel>) opts.ApplyTo(db);
}

关于c# - 将 OData Queryable 与存储库一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15295153/

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