データセットではなく値を返すストアドプロシージャがあり、EF4を使用するには問題があります。パラメータを使用してストアドプロシージャを呼び出す
私はこれを見てきました:私はモデルに手順を追加し、機能をインポート:http://dotnet.dzone.com/news/how-retrieve-stored-procedureここ
は私がやったことです。
私の最初の問題は、プロシージャのパラメータの名前が@_Parameter_in
のようになっていたことです。これにより、EFはp_Parameter_in
という名前になりました。最初の文字としてアンダースコアを使用できないためです。その後、ストアドプロシージャを呼び出すと、SQLプロファイラ呼び出しで@p_Parameter_in
が見つかることがわかりましたが、もちろんそれに問題がありました。
ここでパラメータの名前を変更し、SQLトレースを調べました。すべてが見た目と機能が素晴らしいです。問題は、私が価値を得ることができないということです。私のコードがどのように見えるかですここで:
System.Data.Objects.ObjectParameter newKey = new System.Data.Objects.ObjectParameter("NewKey_out", typeof(Int32));
newKey.Value = 0;
context.GetNextSurrogateKey_v2("tTest", newKey);
newKey.Value
を呼び出した後、それは常に0ですか私はそれを設定するどのような値。それは価値をもたらすものではありません。私は私の問題が私はどのように関数をインポートすると思われる。私はScalarsとデータタイプInt32
を使用します。何らかの理由で "Create Complex complex type"が無効になっています。誰もがその問題を抱えていた?
これは見るべきことですが、私はちょうどこのように動作する手順を変更するかもしれません。現在、スカラー値は返されません。ストアドプロシージャのOUTPUTパラメータに値を割り当てます。 – katit
これはうまくいきません。 「店舗のデータプロバイダから返されたデータリーダーに、要求されたクエリの列が足りない」というエラーが表示される – katit
ストアドプロシージャの最後に@MyValueを配置することで、 – katit