私は EF 4.1 Database First アプローチを使用しており、T4 テンプレートは別のアセンブリで POCO クラスを生成します。データをフェッチするためのリポジトリと、UI との通信に使用されるサービス レイヤーがあります。
カスケードドロップダウンを作成しようとしていました。私は MVC と EF 4.1 が初めてなので、stackoverflow で可能な解決策を検索しました。
これは、ビューモデル クラスのサンプルです。
public class MyViewModel
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
public IEnumerable<Phone> Phones { get; set; }
}
私がこれまでに読んだこと、解決策は次のとおりです。
プロパティを参照する際に使用
ScriptIgnoreAttribute
しSystem.Web.Script.Serialization
ます - POCO プロジェクトで System.Web への参照を追加したくないため、これを実際に行いたくありません。EF 4.1 DbContext で遅延読み込みを無効にする - プロジェクト全体でインクルードを使用するかどうかわからない
匿名型を返す - プロジェクトが大きくなると、このアプローチで問題が発生しますか?
ViewModel を使用します - 1 つ以上の電話を持つ顧客がいるとします。最初のドロップダウン リストで顧客を選択し、2 番目のドロップダウン リストで顧客の電話をすべて表示します。
しかし、これは私の Phones オブジェクトで循環例外を生成しませんか? または、Phone オブジェクトの特別なクラスを作成しますか? それは多くの不要なコードのようです。AutoMapper を使用してください - AutoMapper の経験がないので、それがどれほど複雑かわかりません。
あなたはどちらに投票しますか、そしてその理由は何ですか?