SQL Serverでは、Open Queryを使用してリンクサーバーからデータをクエリする単純なselectステートメント(SET NOCOUNT OFFを使用)を起動するストアドプロシージャを作成しました。SQL Serverでこのデータをクエリすると、正しい結果が返されます。例:
SELECT * FROM OPENQUERY(SERVER, ''SELECT * FROM db.table WHERE field = ' + '''' + '''' + @var+ '''' + ''''')'
これで、Entity Framework v4を使用してデータにアクセスするC#WinFormsアプリケーションがあり、このストアドプロシージャにコードでアクセスしたいと考えています。
通常の「データベースからモデルを更新」を実行し、ストアドプロシージャを追加してから、関数のインポート(たとえば、getDataと呼ばれる)を追加することを選択しました。[列情報を取得]をクリックした後、次のメッセージが表示されました。
'The selected stored procedure returns no columns'
この時点で、[OK]をクリックして、SPにアクセスするための簡単なコードを記述しました(次のように)。
using(var context = new MyContext())
{
var result = context.getData('paramdata');
}
コードをステップスルーすると、結果は「-1」に設定されます。いくつかの読み取りを行った後、誰かが私が行ったストアドプロシージャでNOCOUNTをOFFに設定することを提案しましたが、違いはありませんでした。
これがSQLServerのクエリから機能するのに、Entity Frameworkでは機能しない理由がわかりませんか?
これを機能させる方法はありますか?
前もって感謝します。