0

IQueryable<T>次の内部でオブジェクトを宣言すると、この問題が発生します。

select new { };

次のような非LINQメソッドTostring()またはその他の関数を呼び出したい場合の一部:

select new
{
    TFPricep = CurrancyHelper.DecimalToCurrency(TFPrice),
    TFDatep = TFDate.Tostring()
};

次のような有名なエラー メッセージが表示されます。

LINQ to Entities はメソッド 'foo' を認識しません。

だから何が起こるかというToList()と、データベースからデータを取得してから、リストで foreach ループを実行し、ToString() パフォーマンスの問題がある各リストレコードでなどの関数を呼び出す必要があります。私がテストした限り、LINQ to SQL にはそのような問題はありませんでしたが、この問題はまだ存在しています。Entity Framework

クエリを実行するときにLINQメソッドを呼び出さず、ループごとにそのような実行を防ぐ方法はあるのだろうか?

4

2 に答える 2

1

この問題に直面したとき、2 つの可能な解決策を見つけましたが、最終的に Linq to Entities が変換できないものは使用しないことにしました。

私は2つのオプションを見つけました:

1) .edmx ファイルを使用している場合は、http://msdn.microsoft.com/en-us/library/vstudio/dd456857(v=vs.110).aspx を 参照してください。

2) この他のオプションは少し見にくいですが、.edmx ファイルは必要ありません。

http://damieng.com/blog/2009/06/24/client-side-properties-and-any-remote-linq-provider https://www.nuget.org/packages/Microsoft.Linq.Translations/ https ://github.com/peschuster/PropertyTranslator

最後のコメント: 私はこれらのオプションを試したことがないので、それらが機能するかどうかは 100% 確信が持てませんが、正当なようです。

于 2013-10-27T03:47:31.963 に答える
1

いいえ     

于 2013-10-26T19:52:50.503 に答える