我還有導航屬性的另一個問題,但這次我的配置是WCF數據服務+ EF。breezejs:導航屬性創建但未填充數據
基本上,元數據看起來不錯,我有參考約束,關聯等......我已經在模型中設置了[ForeignKey]屬性。
在客戶端創建的導航性能,但是當數據被檢索(使用$擴展),收集未充滿雖然數據肯定是由服務器返回:
的這裏的關聯是OpenPosition上的tasks_id和Mandate上的id之間的關係。
我注意到OpenPositions集合中的Mandate實體包含__deferred和實體的uri。我沒有看到WebApi,所以也許這就是問題,或者這只是正常的行爲。
有什麼我失蹤了嗎?
EDIT
客戶機側查詢是:
var query = breeze.EntityQuery.from("Mandates").inlineCount().expand("OpenPositions");
return manager.executeQuery(query.using(service)).then(function (result) {
logger.info(result);
}).fail(function (error) {
logger.error(error);
});
編輯2
原因導航屬性未填充是因爲,在WCF的DataService的情況下,導航屬性作爲一個對象返回,其中包含一個名爲results的Array屬性。
而在WebAPI的情況下,導航屬性作爲數組返回。
請注意,在這兩種情況下,都使用相同的數據模型(EF上下文)。
查看截圖:
WCF:
的WebAPI:
但微風否則期望一個數組,它只是忽略了導航屬性並返回null:
// needed if what is returned is not an array and we expect one - this happens with __deferred in OData.
if (!Array.isArray(relatedRawEntities)) return null;
您的客戶端EntityQuery看起來像什麼? –
當然,看我的更新。就像我說的,數據從服務器回來。導航屬性存在於任務實體中,但它仍然是空的,而所有其他屬性都是正確填充的。 – Sam