1

这是我第一次尝试使用微风.js,所以我可能有一些设置不正确,但不确定它是什么。

执行简单查询时遇到错误。我首先在 VS2012 项目中使用 EF 5.0 DB。

发生了错误。值不能为空。参数名称:System.Linq.Queryable.Where[TSource](IQueryable 1 source, Expression1 predicate) at Breeze.WebApi.ODataActionFilter.OnActionExecuted(HttpActionExecutedContext actionExecutedContext) at System.Web.Http.Filters .ActionFilterAttribute.CallOnActionExecuted(HttpActionContext actionContext, HttpResponseMessage response, Exception exception) at System.Web.Http.Filters.ActionFilterAttribute.<>c_ DisplayClass2.b _0(HttpResponseMessage response) at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass412.<Then>b__40(Task1 t) 在 System.Threading.Tasks.TaskHelpersExtensions.ThenImpl[TTask,TOuterResult](TTask 任务,Func`2 继续,CancellationToken cancelToken,布尔值 runSynchronously)

为了确定我做错了什么,我下载了微风服务器源代码并将该项目包含在解决方案中,以便我可以跟踪错误。错误发生在 ODataActionFilter.cs 中的 OnActionExecuted 事件中。奇怪的是,对于同一个查询,该函数被调用了两次。该函数首先使用 responseObject 中的查询调用。第二次调用事件时,查询的结果在 responseObject 中。这不再是导致错误的 iQueryable 对象。我无法确定为什么该函数已经有正确的结果而被第二次调用。

有没有人见过这个并且可以告诉我修复它的方向?

谢谢

4

1 回答 1

1

我在回答我自己的问题。

解决方案是我的 api 控制器没有应用新的 BreezeController 属性。这不在任何文档中。但是,我确实在样本中找到了它。

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

[JsonFormatter, ODataActionFilter]
public class TodosController : ApiController {

但是,当前的样本有这个:

[BreezeController]
public class TodosController : ApiController {

这纠正了问题,但很难找到。我也不清楚是否应该将新的 BreezeController 属性添加到原始的两个属性中,或者是否完全替换它们。

于 2012-12-30T21:29:56.197 回答