我已经发布了WebAPI服务,它返回一个项目列表。我正在实施Breeze,并已经设法基本上使用过滤/排序。但是,展开不起作用。微风扩展不能使用WebAPI与EF
http://www.ftter.com/desktopmodules/framework/api/dare/dares?$expand=ToUser
可以看到ToUserId ForeignKey的在上面的响应,但TOUSER性质是NULL(用户肯定存在)
可以看到在元数据中的至用户EF导航属性。
当我使用。在服务器端包括我可以用EF填充它,但我不想这样做。
我查了微风教程2在这里展开:http://learn.breezejs.com/ 下面是它不扩大:http://learn.breezejs.com/api/northwind/Products
,并在这里它与展开(你可以看到另外一种类型的信息):http://learn.breezejs.com/api/northwind/Products?$expand=Category
这是什么,我试图做的,但我的不往里面...
UPDATE: 我下载了Breeze 1.3.6 Samples并装载在VS2011的DocCode解决方案。 我跑了,看到客户端扩展工作; 例如 http://localhost:47595/breeze/Northwind/Orders?$top=1
(不扩展) http://localhost:47595/breeze/Northwind/Orders?$top=1&$expand=Customer
(正确地扩展客户)。
我检查了WebAPI控制器代码,它看起来是一样的,除了他们使用EF Code First而不是Model First。外键饰有一个属性:
的作品[ForeignKey("CustomerID")]
[InverseProperty("Orders")]
public Customer Customer {get; set;}
这只是没有任何意义
微风样本...这是什么与我的WebAPI控制器或的EntityFramework关系.. 。
更新2 我下载了最基本的待办事项淘汰赛微风样品,并加入这行来的TodoItem类:public User ToUser { get; set; }
我就能够扩展网络API调用with http://localhost:63030/breeze/todos/Todos?$expand=ToUser
所以我得出的结论是,这与我使用EntityFramework DB First而不是Code First的事实有关。在Breeze和EF的WebAPI当前版本中,它确实似乎是可行的。
更新3 我已经把范围缩小到我的数据库,数据库EF第一,代码第一次的差异,但仍然没有确定的问题。我已经从一个模型改为一个代码优先的方法,结果完全相同(即没有展开)。
例如:如果您在Breeze网站上查看此扩展,http://learn.breezejs.com/api/northwind/Products?%24expand=Category,请尝试将最后一个参数更改为无效字段并引发错误,例如,: http://learn.breezejs.com/api/northwind/Products?%24expand=Category1
然而,在我的代码,它总是忽略这个PARAM并返回所有的记录,如果展开参数是不正确从未抛出异常: http://www.ftter.com/desktopmodules/framework/api/dare/dares?$expand=To4657657User
因此我难倒。我有不知道为什么这不起作用。
我的代码
[HttpGet]
[Queryable(AllowedQueryOptions = AllowedQueryOptions.All)]
public HttpResponseMessage Dares()
{
var response = Request.CreateResponse(HttpStatusCode.OK, (IQueryable<Dare>)contextProvider.Context.Dares);
return ControllerUtilities.GetResponseWithCorsHeader(response);
}
,这里是从我的EF模型(使用数据库优先)
public partial class Dare
{
public int DareId { get; set; }
public int ToUserId { get; set; }
public virtual User ToUser { get; set; }
}
$选择&$扩展支持最新的Beta预览版位的一部分发布几天就回来。仅供参考:http://www.asp.net/vnext –
仅供参考:我已更新我的问题以修正$,并且还包含Breeze教程中的URL,其中展开工作。 – Rodney
Re。测试版预览:我不明白这一点 - Breeze教程示例如何工作?你是说这是一个Web API问题(不是Breeze问题)?我正在努力理解哪里有技术开始,哪里结束。在此期间是否有任何解决方法... – Rodney