Entity framework Breeze与存储过程CLR错误

Entity framework Breeze与存储过程CLR错误,entity-framework,asp.net-web-api,breeze,Entity Framework,Asp.net Web Api,Breeze,我正在尝试使用实体框架调用存储过程。 如果我直接使用WebAPI方法,它可以正常工作,但是当从breeze调用它时,它会导致元数据方法出现异常。 错误是: “找不到…”的CLR类型。 有人知道如何解决这个问题吗?我也遇到了同样的问题,但感谢上帝,我找到了解决办法。您应该使用视图,而不是使用存储过程,因为Breeze将视图识别为DbSet,就像表一样。假设您有一个SQL server表,其中包含两个表Customer和Orders Customers (**CustomerId**, FirstN

我正在尝试使用实体框架调用存储过程。 如果我直接使用WebAPI方法,它可以正常工作,但是当从breeze调用它时,它会导致元数据方法出现异常。 错误是: “找不到…”的CLR类型。
有人知道如何解决这个问题吗?

我也遇到了同样的问题,但感谢上帝,我找到了解决办法。您应该使用视图,而不是使用存储过程,因为Breeze将视图识别为
DbSet
,就像表一样。假设您有一个SQL server表,其中包含两个表Customer和Orders

Customers (**CustomerId**, FirstName, LastName)
Orders (OrderId, #CustomerId, OrderDate, OrderTotal)
现在,假设您需要一个按CustomerId返回订单的查询。通常,您会在存储过程中执行此操作,但正如我所说,您需要使用视图。因此,查询在视图中看起来是这样的

Select o.OrderId, c.CustomerId, o.OrderDate, o.OrderTotal
from dbo.Orders o inner join dbo.Customers c on c.CustomerId = o.CustomerId
请注意,没有筛选(其中…)。因此:

一,。创建一个包含筛选键的[常规]视图,并将其命名为,
OrdersByCustomers

二,。将OrdersByCustomers视图添加到VS项目中的实体模型中

iii.将实体添加到Breeze控制器,如下所示:

public IQueryable<OrdersByCustomers> OrdersByCustomerId(int id)  
{
    return _contextProvider.Context.OrdersByCustomers
                                   .Where(r => r.CustomerId == id);
}
var getOrdersByCustomerId = function(orderObservable, id)
{
    var query = breeze.EntityQuery.from('OrdersByCustomerId')
                                  .WithParameters({ CustomerId: id });

    return manager.executeQuery(query)
                  .then(function(data) {
                      if (orderObservable) orderObservable(data.results);
                  }
                  .fail(function(e) {
                      logError('Retrieve Data Failed');
                  }
}
五,。你可能知道接下来该怎么做了


希望有帮助。

需要查看一些代码,显示哪些有效,哪些无效。