これは簡単な答えかもしれませんが、EF CTP5でストアドプロシージャを実行する方法がわかりません。Entity Framework CTP5 - ストアドプロシージャを呼び出す方法
ExecuteFunction("ContainerName.StoredProcName", new ObjectParameter("Id", id))
:
ObjectContext
の方法はどれですか。
しかし、DbContext
にはそのような方法はありません。
ストアドプロシージャを呼び出すにはどうすればよいですか? EF CTP5ではサポートされていませんか?
EDIT:あなたは今すぐに保存されたprodedureを呼び出している)
1:
var people = context.People.SqlQuery("EXECUTE [dbo].[GetAllPeople]");
これは、いくつかの懸念を提起:
私はあなたがこれを行う必要があると述べた、this threadを見つけましたをと設定し、のコンテキストを設定しないでください。ストアドプロシージャは、特定のエンティティセットに縛られるのではなく、コンテキスト全体で使用できるようにする必要があります。ちょうど彼らが "テーブル"の下ではなくSQL Serverの "データベース"の下にあるように。
2)について複合タイプについてはどうですか?以前は、ストアドプロシージャから返される複合型がありました。しかし今、エンティティに直接マッピングする必要があるように見えますか?それは意味をなさない。 ObjectSet/DBSetで直接表現されていない型を返すprocsが多数格納されていますが、どのように引き出すことができないのか分かりません。
これまで私が理解していることから、私はCTP5にアップグレードすることができないため、誰かが私にこの問題を解決したいと考えています。
のようなデータベース全体のSQL文を実行することができます。 – RPM1984
これはあなたの最初の懸念に答えるものです。 spはコンテキスト全体で利用可能です。 DbContext.Databaseは、組み込みのDbDatabaseオブジェクトへの参照です。これは、DbSetで動作するcontext.People.SqlQueryとは異なります。 –
ああ、あなたの権利は、これを与えるとあなたに戻ってきます。 – RPM1984