4

ストアドプロシージャでエンティティフレームワークを使用しています。このフレームワークでは、クエリを動的に生成し、そのクエリを実行しています。ストアドプロシージャクエリは次のようになります。

Begin
  DECLARE @Query nvarchar(MAX)
  SET @Query = 'SELECT e.id, e.name, e.add, e.phno from employee'
  EXEC sp_executesql @Query
End

'@Query'上記のSQLコードでは、変数を実行しており、変数の値を動的に変更できることがわかります。

ストアドプロシージャをedmxファイルに追加できます。次に、モデルブラウザに移動して、 何も表示されないように言っAdd function importてみます。Get column informationしかし、サーバーでストアドプロシージャを実行すると、すべての列に値が返されます。モデルブラウザで列情報を取得できないのはなぜですか?

4

3 に答える 3

1

sysモデルブラウザは、結果から列情報を収集するためにストアドプロシージャを実行していません。テーブルを使用して、基になるプロシージャ定義から列情報を取得しようとしています。

この手順は動的であるため、基礎となる定義がないため、このようにEDMXにインポートすることはできません。

于 2013-03-13T12:22:21.820 に答える
1

ストアドプロシージャを一時的に次のように変更します

SELECT TOP 1 e.id, e.name, e.add, e.phno from employee /* ... rest of your proc commented out */

次に、それをEFに追加し、関数importを作成します(列が表示されます)。

次に、procを上記の状態に戻します。

于 2013-06-13T23:49:01.653 に答える
0

「混乱」する可能性のあるメッセージを抑制する....のSET NOCOUNT ON後に追加してみてくださいBEGIN

于 2013-03-13T12:25:04.550 に答える