新项目使用WebAPI和Breeze失败

新项目使用WebAPI和Breeze失败,breeze,Breeze,在尝试按照自述文件中的指令运行新项目时,我收到以下错误 1:查询TODO 2:查询失败:返回类型为System.Collections.Generic.List`1[[MyTasks.Api.Models.BreezeSampleTodoItem,MyTasks.Api,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]]的控制器“BreezeSample”上的操作“Todos”无法支持查询。确保返回内容的类型为IEnumerable、IQu

在尝试按照自述文件中的指令运行新项目时,我收到以下错误

1:查询TODO

2:查询失败:返回类型为System.Collections.Generic.List`1[[MyTasks.Api.Models.BreezeSampleTodoItem,MyTasks.Api,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null]]的控制器“BreezeSample”上的操作“Todos”无法支持查询。确保返回内容的类型为IEnumerable、IQueryable或任一接口的通用形式

更新:

我检查了我的事件查看器,发现了一个SQL错误,这是我在尝试在我的机器上调试时从未见过的-

用户“我的机器\用户名”登录失败。原因:无法打开显式指定的数据库。[客户:]

由于某种原因,BreezSamplesContext生成的数据库似乎无法访问?它首先是由代码生成的,但我无法查询它(显然)

更新2:

我已将默认方法更改为-

[HttpGet]
public IQueryable<BreezeSampleTodoItem> Todos()
{
    System.Data.Entity.DbSet<BreezeSampleTodoItem> result = null;
    try
    {
        result = _contextProvider.Context.Todos;
    }
    catch (Exception exc)
    {
        throw new Exception(exc.Message);
    }
    return result;
}
[HttpGet]
公共可查询待办事项()
{
System.Data.Entity.DbSet result=null;
尝试
{
结果=_contextProvider.Context.Todos;
}
捕获(异常exc)
{
抛出新异常(exc.Message);
}
返回结果;
}

虽然Seed方法可以工作,并且数据库被删除并重新填充了Seed值,但我在上面的“result”中得到了0个项目的响应。

来自NuGet的示例被设置为在每次运行代码时删除并重新创建数据库。您是否碰巧在SQL Management Studio中打开了数据库?我也遇到了这个


看看BreezeSampleDatabaseInitializer类。查看有关在服务器会话之间保留更改的注释。如果更改类以实现DropCreateDatabaseIfModelChanges接口,则仅在更改模型时才会尝试删除数据库。

NuGet的示例设置为在每次运行代码时删除并重新创建数据库。您是否碰巧在SQL Management Studio中打开了数据库?我也遇到了这个


看看BreezeSampleDatabaseInitializer类。查看有关在服务器会话之间保留更改的注释。如果更改类以实现DropCreateDatabaseIfModelChanges接口,则仅在更改模型时才会尝试删除数据库。

更新:12月15日

关键信息。。。问题的原因是。。。是使用发布前SPA模板

该模板与Breeze文档中描述的MVC 4Web API模板不同

SPA模板和MVC更新包括对OData查询的ASP.NET Web API支持的开始。他们对小田的刺杀与微风相冲突;这两股势力正在争夺OData查询的所有权。希望我们可以使用他们的,但它缺少一些基本功能,例如对$select和$expand的支持

幸运的是,禁用MS版本很容易,这样微风就会盛行。打开应用程序启动/WebApiConfig.cs文件并删除或注释掉以下内容:

config.EnableQuerySupport(); // conflicts with Breeze's ODataActionFilter 在
var items…
行上放置一个断点,然后使用调试器重新运行(F5)。进入那条线。它扔了吗(不好但有趣)?如果没有,你得到了多少物品?零?你应该有6个

如果你不能越过这一点,我认为这不是一个轻而易举的问题。微风还没做什么。我会在你的环境中寻找意想不到的东西


当你达到这一点时,让我们知道它的情况;如果仍然卡住,我们将为下一步做好准备

更新日期:12月15日

关键信息。。。问题的原因是。。。是使用发布前SPA模板

该模板与Breeze文档中描述的MVC 4Web API模板不同

SPA模板和MVC更新包括对OData查询的ASP.NET Web API支持的开始。他们对小田的刺杀与微风相冲突;这两股势力正在争夺OData查询的所有权。希望我们可以使用他们的,但它缺少一些基本功能,例如对$select和$expand的支持

幸运的是,禁用MS版本很容易,这样微风就会盛行。打开应用程序启动/WebApiConfig.cs文件并删除或注释掉以下内容:

config.EnableQuerySupport(); // conflicts with Breeze's ODataActionFilter 在
var items…
行上放置一个断点,然后使用调试器重新运行(F5)。进入那条线。它扔了吗(不好但有趣)?如果没有,你得到了多少物品?零?你应该有6个

如果你不能越过这一点,我认为这不是一个轻而易举的问题。微风还没做什么。我会在你的环境中寻找意想不到的东西


当你达到这一点时,让我们知道它的情况;如果仍然卡住,我们将为下一步做好准备

数据库正在按预期删除和重新生成,并且正在填充种子数据。然而,当我运行应用程序时,我得到了上面的错误。我能够将应用程序配置为同时使用SQL Express和MDF文件,并且都以相同的结果结束。在SQL express中,我收到登录失败消息。我没有收到任何与MDF有关的SQL错误。最奇怪的是,返回类型是IQueryable,但应用程序会抛出一个错误,抱怨返回类型为List。这对我来说毫无意义。我没有返回类型列表的集合。这可能没有多大帮助,但我看到相同的事件记录在我的开发框中。您是否将BreezeSample控制器从“开箱即用”更改?如果是,你能发布Todos操作代码吗?我打赌你没有,但是