DBに対してではなく、既存の結果セット変数から値を取得して、LINQ toEntitiesクエリを実行する方法

RizJa

コンテキストを提供するために、jqGridを使用して日時フィールドでサーバー側の検索を実行し、時間部分のサーバー側を切り捨ててから、ストアドプロシージャを介して結果をフェッチしています。これは、System.Dynamic.Linqを使用して実行されていますこれは、この質問に従って少し変更しまし私はEF6コードファーストアプローチを使用しています。コードの関連部分は次のようになります。

//For matching date instead of datetime values
if (wc.Clause.Contains("Date"))
{
    wc.Clause = wc.Clause.Replace("DeliveryDate", "DbFunctions.TruncateTime(DeliveryDate)");
}
results = dataFileDB.Database.SqlQuery<Document>("exec [dbo].[sp_getDocumentDetails]").AsQueryable().Where(wc.Clause, wc.FormatObjects);

私が抱えている問題は、クエリがストアドプロシージャを使用してフェッチされるため、最後の行に次のような例外が発生することです。

System.NotSupportedException:この関数は、LINQからエンティティに対してのみ呼び出すことができます。System.Data.Entity.DbFunctions.TruncateTime(Nullable`1 dateValue)で

ラムダクエリを使用してエンティティ自体から直接フェッチし、where句フィルターを適用した他の場所では、フィルター処理は正しく行われます。

私がやろうとしていたこと(そしてこれが可能かどうかはわかりませんが...)は、results変数に対してエンティティクエリを実行し、その変数にwhere句を適用しましたが、運がありませんでした。これは正しい方法ですか、それとも私が取ることができる別のアプローチがありますか?

前もって感謝します!

RizJa

了解しました...私は物事を複雑にしすぎていました。

ストアドプロシージャを介してフィールドを返すときDateTimeに、Dateフィールドをフィールドに変換しましたそうすることで、DbFunctions.TruncateTimeメソッドを使用する必要がなくなり、問題が解決しました。

これが他の誰かに役立つことを願っています!

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ