2009-05-13 10 views
0

LINQ to SQLを使用して呼び出されるストアドプロシージャは、ストアドプロシージャ内に別のストアドプロシージャが呼び出され、結果が出力されます。 SELECTの結果がLINQからSQLに返されないため、結果のint値しか取得できません。ストアドプロシージャ内のストアドプロシージャの選択結果を取得する方法ストアドプロシージャでLinq to SQLを選択

答えて

1

LINQデザイナは、ストアドプロシージャを正確に解析してスキーマを判断できません。 1つの回避策は、一時的にストアドプロシージャを適切なスキーマの単純な選択に変更することです。デザイナーで再マップします。次に、格納されているプロシージャを元のものに戻します。このようにして、設計者はスキーマを把握し、スキーマを正しいエンティティに正しくマップすることができます。

+0

選択結果はスカラーint型の結果ですが、LINQはまだそれがちょうど1を選択するために、あなたのSPを変更 – monkeylee

+0

見ることができません。それを解析して元に戻します。それはうまくいくでしょう。 – TheSoftwareJedi

+0

linqが結果の型を選択するための複数の結果を返すクエリに変更する必要がありました。みんなありがとう – monkeylee

0

Sql Server Management Studioからストアドプロシージャを呼び出すと、複数の行セットが返されますか?

その場合、LINQのストアドプロシージャを使用するのは簡単ではありません。this articleを参照してください。複数の結果を読む

は、DataReaderオブジェクトからNextResultメソッドを使用して簡単です:私は後の午前

var com = yourConnection.CreateCommand(); 
com.CommandText = "execute dbo.YourSp 'par1'"; 
var read = com.ExecuteReader(); 
// Move to second result set and read it 
read.NextResult(); 
while (read.Read()) { 
    Console.WriteLine(read["MyField"]); 
} 
関連する問題