2011-12-19 13 views
1

私はC#コードからストアドプロシージャを呼び出したいと思います。これは私が試した方法です:EFストアドプロシージャにパラメータを渡す方法は?

var result = db.ExecuteStoreCommand("TaskSchedule", new object[] { new ObjectParameter("treatmentDateFrom", dateTime)}); 

しかし私は、次のエラーを取得しています:

No mapping exists from object type System.Data.Objects.ObjectParameter to a known managed provider native type.

あなたは私が間違って何をやっている私に助言していただけますか?

私はSPから値を取得することに関する多くの記事を見てきましたが、SPにパラメータを渡したいと思います。私はEF4を使用しています。

ありがとうございました。

答えて

1

ストアドプロシージャトラフEFへのアクセスは、SPをObjectContextにマッピングすることで簡単に行うことができます。

EDMXデザイナーでは、ストアドプロシージャをインポートし、結果を新しいタイプまたは既存のタイプにマップできます。この後、SPはオブジェクトコンテキストで強く型付けされた関数になります。

Here is some documentationについてSPをインポートしています。

SPをインポートしてExecuteStoreCommandを使用したくない場合は、コマンドテキストにパラメータを指定し、SqlParameter型が正しい名前と値であることを確認する必要があります。

+0

インポート機能としてEDMXに追加しました。しかし、パラメータを追加する方法はありません。 EDMXでは、SQL管理スタジオのように、このプロシージャにパラメータが必要であることがわかります。 EDMXを手動で編集しようとしましたが、これらのパラメータを追加しました。私はまた、インポート機能をリフレッシュしています。今度は、このプロシージャを適切なパラメータで呼び出すことができます。 var result = db.TaskSchedule(DateTime.Now、...); ストアデータプロバイダから返されたデータリーダーには、要求されたクエリの列が不足しています。 – user1089583

+0

http://msdn.microsoft.com/en-us/library/bb896334.aspxは役に立ちますか? –

関連する問題