EF Code First を使用して Web Api + Ko + Breeze で ASP.NET MVC4 を使用したシングル ページ アプリを開発しています。
私たちの(簡略化された)データモデルは次のようになります
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 はナビゲーション プロパティ (外部キーを使用) であり、ImageSet 内の画像の 1 つです。
Products() の Web API メソッドと、デフォルトの Breeze 構成を公開しています。ワイヤ上の JSON シリアル化出力にはオブジェクト (つまり、PreserveReferencesHandling.Object) の参照があるため、ImageUrl ko をバインドしたいときに値を解決できません。
HTMLはこんな感じ
<img data-bind="attr: { src: DefaultImage().ImageUrl, title: Name}" />
シリアライザーを PreserveReferencesHandling.None に切り替えると、バインディングが機能します。
質問: デフォルトの構成を機能させるにはどうすればよいですか? または、Breeze の PreserveReferencesHandling.None に切り替えた場合、落とし穴/欠点は何ですか?
ありがとう!