gpt4 book ai didi

javascript - Breeze : mixing EF context and IQueryable

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

我在这里遇到了一个不寻常的情况。我有一个具有以下操作方法的 WebAPI breeze Controller :

    [HttpGet]
public IQueryable<Client> Clients(bool IsEbasys = false)
{
if (IsEbasys)
{
List<Client> lst = new List<Client>();
lst.Add(new Client() { FirstName = "Sam", LastName = "Smyth" });
return lst.ToList().AsQueryable<Client>();
}
else
{
return _contextProvider.Context.Clients;
}
}

2个场景:

如果我删除类中的 [BreezeController] 属性,硬编码列表将正常返回。但是当然,第二个不再有效(实际上它返回所有客户端实体,而不考虑查询过滤器)。

如果我在我的类上添加 [BreezeController] 属性,那么查询上下文会按预期工作,但由于某些原因,硬编码列表作为空数组返回给客户端,尽管它应该包含一个客户端。

有解决办法吗?或者我不能将两者混合在同一个 Controller 中吗?

最佳答案

您是否尝试过将属性 BreezeQueryable 添加到方法中?

[HttpGet]
[BreezeQueryable]
public IQueryable<Client> Clients(bool IsEbasys = false)
{
if (IsEbasys)
{
List<Client> lst = new List<Client>();
lst.Add(new Client() { FirstName = "Sam", LastName = "Smyth" });
return lst.ToList().AsQueryable<Client>();
}
else
{
return _contextProvider.Context.Clients;
}
}

来自 http://www.breezejs.com/documentation/web-api-controller

Breeze 查询属性

Breeze 客户端通过向格式化为 OData 查询 URL 的 Controller 发送 HTTP GET 请求来查询数据。例如,客户端可以使用此 URL 查询按创建日期排序的事件(未存档)待办事项。

1.../breeze/todos/Todos?$filter=IsArchived eq false&$orderby=CreatedAt使用 Breeze [Queryable] 属性 [1] ,Breeze 可以扩展 Controller 的 Todos 操作方法返回的 IQueryable(参见上面的代码示例)。最终效果是一个 LINQ 查询,如下所示:

12个查询 = _contextProvider.Context.Todos .Where(t => t.IsArchived == false).OrderBy("CreatedAt");修改 IQueryable 后,Breeze 可以执行它,调用查询的 LINQ 提供程序(本例中为 Entity Framework 提供程序)。

关于javascript - Breeze : mixing EF context and IQueryable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18695184/

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