javascript - Breeze : mixing EF context and IQueryable

标签 javascript breeze

我在这里遇到了一个不寻常的情况。我有一个具有以下操作方法的 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 查询,如下所示:

1 2个 查询 = _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/

相关文章:

javascript - 如何将 CSS(特别是 padding/margin )应用于选项或选择下拉列表的选项组?

javascript - 当事件显示触发时,弹出窗口中的引导日期选择器清除其他输入

javascript - Jquery Masked Input 插件允许点

c# - 无法将验证器添加到 EF 生成的元数据中

javascript - 投入尝试,捕获,最后 - 奇怪的行为?

knockout.js - 使用 typescript Breeze 实体

asp.net-mvc - Breeze .js : how to transform a Breeze entity to a plain JSON object

javascript - Breeze.js - 查询大数据

javascript - Breeze.js 到 ODATA Web API - CORS 请求失败

javascript - 最大并发任务数为 "running"的异步任务管理器