シナリオ 私はEntity Framework 4.1でVisual Studio 2010を使用しています 多くのテーブルと多くのストアドプロシージャを持つ従来のデータベースがあります。 MVC 3を使用してASP.NET C#プログラムを作成しています。エンティティフレームワークで選択ストアドプロシージャをマッピングする
ADO.NET DbContextを使用して「データベースファースト」デザインを採用していますので、すべてのモデルとアソシエーションとナビゲーションプロパティをきちんと設定したedmxがあります。 私は、挿入、更新、削除の手順を関連するモデルにマップできます。 私は他のストアドプロシージャをインポートするために「関数インポート」を使用しました。 しかし、Selectプロシージャを選択アクション(id、selectリスト、filterで選択など)にマップする方法が見つかりません。
EFは遅延読み込みを使用しているように見えますが、オブジェクトが子オブジェクトをフェッチするときに、既に書き込まれたストアドプロシージャが使用されます。 (選択手順は、アカウントに「IsDeleted」フラグを取り、そしてとりわけ句、「BY ORDER」を使用)
私は http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx この記事から参照SQLにLINQのは、SPののドラッグ&ドロップを可能にする、その音、多かれ少なかれ、まさに私が欲しいものです。
私はまた、DefiningQueryという言葉に出会った。 http://msdn.microsoft.com/en-us/library/cc982038.aspx これは私が欲しいものですか? 「モデルの更新ウィザードを実行すると、クエリの定義を含む、ストレージモデルに加えられた変更はすべて上書きされます」というメモは気に入らない
要約すると、オブジェクトが自分のストアドプロシージャを使用する子オブジェクトをフェッチするとき、私は何をしたいのですか。
私はEntity Frameworkを使用して目標を達成できますか? 明白な何かを忘れましたか?
あるいは、例えば、私の生成されたアドレスのモデルは、このプロパティを持っているように、私は、本当に賢いこととDBエンティティT4テンプレートを変更しようとする必要があります:
GetAddressLinesは関数を呼び出すカスタム関数であるpublic virtual ICollection<AddressLine> AddressLines {
get{
DBWrapper _db = new DBWrapper();
return _db.GetAddressLines(AddressID);
}
set{};
}
インポートし、必要な変換を行います。
ありがとう:ジュリー・ラーマンの記事を参照してください。それは私が疑うものを確認する – Webbie4