私はEntity Framework 4を使用しており、モデルには一連のストアドプロシージャがあります。現在、私たちは必要なすべてを行うことができます。しかし、我々は文字列を取り、最終的には結果セットを返すためにEntity Frameworkに動的ストアドプロシージャの列を認識させるにはどうすればいいですか
Create Procedure usp_RunSearch
@searchTerm VARCHAR(2000)
AS
BEGIN
DECLARE @sql VARCHAR(4000)
SET @sql = '
SELECT ID,
NAME
FROM Users'
IF(ISNULL(@searchTerm, '') != '')
BEGIN
SET @sql = @sql + 'WHERE ' + @searchTerm
END
Exec (@sql)
END
のような処理を実行する新しい手順があります。
EFは結果の列リストを取得するためにこの手順を調べることができないようです。
EFがこの障害を乗り越えるためにできることはありますか?
これを試しましたが、デフォルトをnullに設定しました。私は、最良のソリューションは、私の複雑な型を作成し、それを関数のインポートにマップすることだと思います。これは単にsprocの返り値の列に対して複合型の定義を追跡しなければならないことを意味します。 –
Btw、私はなぜあなたがそのspを必要としているのかわかりませんが、Dynamic Linqを探しているかもしれません。 Dynamiq Linqはそのようなspをほとんど必要としません。 Dynamic Linqがここにリンクされていることに気付かれていない場合に備えて、それは古くなっているかもしれません。 http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx – hazimdikenli