我正在開始使用OData和實體框架。OData異常複雜類型'WebTools.Order'通過屬性'Customer'引用實體類型'WebTools.Customer'
我創建了一個公開客戶的控制器。在模型(EDMX)中只有一個實體(客戶),一切正常(數據正在呈現)。
現在,當我添加第二個實體(Order)(從數據庫更新模型,選擇Order)時,會自動設置1對多(1 Customer to Many Order)。
我別的什麼也不做,當我編譯/運行控制,我得到這個錯誤:
Line 23: builder.EntitySet(Of Customer)("Customers")
Line 24: Return builder.GetEdmModel() --> Exception Here
Line 25:
Line 26: End Function
複雜類型「WebTools.Order」指的是實體類型「WebTools.Customer」通過屬性'顧客'。
如果我刪除訂單實體,它的工作原理。
我不確定問題出在OData/WebAPI部分或「實體框架」的「配置」上。
如果我有客戶實體和其他非關聯到客戶實體(城市或其他),它工作......只要我包含任何「與客戶相關的」實體(來自數據庫的更新模型),它就會失敗。我對EF的理解是,使用「從數據庫更新模型」更新模型將負責處理實體之間的導航/關係(對嗎?)。 – 2013-03-15 18:47:03
不幸的是,此時EF使用的EDM模型與Web API OData使用的EDM模型不同。人們通常不願意直接公開自己的數據庫模型,而是使用DTO來將它們分開。我們正在努力改進模型構建的經驗,以便您只想通過服務公開數據庫模型。在那之前你必須自己建立模型。另外,是否有可能分享您的客戶和訂單類?只是想看看爲什麼ODataModelBuilder無法正確推斷它。 – 2013-03-15 20:43:36
非常好,謝謝。我完全同意你對直接暴露數據庫模型的評論,我只是向我的團隊炫耀OData。謝謝 – 2013-03-16 12:20:26