2

MySqlで次のことを実行しようとしていますが、関数がサポートされていないというlinq-to-entities例外が発生します。SqlFunctions.DateAddを使用しようとしましたが失敗しました。これまでのところ唯一の解決策はToList()を使用することですが、それは私が好きではないクライアントにすべてをもたらします:

var expiredPolcies = context.ApiUsagePolicies
    .Where(u => DateTime.UtcNow > u.UsagePolicyStart.AddSeconds(u.UsagePeriodSeconds));
4

1 に答える 1

1

SqlFunctionsは、EntityFrameworkとSQLServerに固有のものです。

SqlMethodsは、LinqtoSQLおよびSQLServerに固有です。

MySqlに同等のメソッドのセットがある場合は、それを使用できます。

または、ローカルメソッドが含まれないように、クエリを書き直してみてください。次のようなものを試してください:

var expiredPolcies = context.ApiUsagePolicies
    .Where(u => 
        (DateTime.UtcNow - u.UsagePolicyStart).TotalSeconds > u.UsagePeriodSeconds);

それはすべて、Linqプロバイダーがサポートする機能によって異なります。

于 2012-04-11T22:22:20.600 に答える