我已經發布了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