我們正在使用EF Code First開發一個使用ASP.NET MVC4和Web Api + Ko + Breeze的單頁應用程序。在breezejs中處理引用
我們(簡體)的數據模型看起來像這樣
class Product {
public String Name { get; set; }
public ICollection<ImageCollection> ImageSets { get; set;}
public Image DefaultImage { get; set; }
}
class ImageCollection {
public ICollection<Image> Images { get; set; }
}
class Image {
public String ImageUrl { get; set; }
}
DefaultImage是導航性能(與外鍵),並在ImageSets的圖像之一。
我們公開了Products()的Web API方法和默認的Breeze配置。線上的JSON序列化輸出具有對象引用(即PreserveReferencesHandling.Object),因此當我想綁定ImageUrl時,ko無法解析值。
HTML如下
<img data-bind="attr: { src: DefaultImage().ImageUrl, title: Name}" />
當我切換串行做PreserveReferencesHandling.None,結合作品。
問題:我如何使默認配置工作?或者如果我切換到PreserveReferencesHandling.Bone for Breeze什麼是陷阱/缺點?
謝謝!
你能澄清你的模型?這對我來說可能太簡單了。如果'DefaultImage'和'ImageSets'是nav屬性,那麼外鍵是什麼?沒有一個班有鑰匙。是否有圖像表與「Image」類型一起使用?我很努力地理解'ImageCollection'類型是一個Code First類型,ImageSets是如何在EF中作爲'ICollection'的'ICollection'工作的。 也不知道你爲什麼設置JSON序列化選項;使用所有Breeze示例控制器所示的Breeze.WebApi.JsonFormatterAttribute有問題嗎? – Ward
對不起沒有回覆或更新此。 Yead,我可能已經簡化了ImageCollection,其上還有一堆其他的「數據屬性」。我們後來發現它爲什麼不起作用。仔細閱讀文檔後,我們意識到Breeze僅支持與模型中顯式外鍵規範的關聯,並且我們使用獨立關聯。爲什麼這個限制已經到位? –