2

EntityFramework.Extended を使用して一括更新を実行しようとすると、2 つの例外のうちの 1 つが発生します。

私が試し たを見ると:

context.ProcessJobs.Where(job => true).Update(job => new ProcessJob
{
    Status = ProcessJobStatus.Processing,
    StatusTime = DateTime.Now,
    LogString = "Processing"
});

次の例外が発生しました。

「EntityFramework.Reflection.DynamicProxy」には「InternalQuery」の定義が含まれていません

...

System.Core.dll!System.Dynamic.UpdateDelegates.UpdateAndExecute1(System.Runtime.CompilerServices.CallSite サイト、オブジェクト arg0) + 0x153 バイト

EntityFramework.Extended.dll!EntityFramework.Extensions.ObjectQueryExtensions.ToObjectQuery(System.Linq.IQueryable クエリ) + 0x2db バイト

EntityFramework.Extended.dll!EntityFramework.Extensions.BatchExtensions.Update(System.Linq.IQueryable ソース、System.Linq.Expressions.Expression> updateExpression) + 0xe9 バイト

EntityFramework.Extended.dll!EntityFramework.Extensions.BatchExtensions.Update(System.Linq.IQueryable ソース、System.Linq.Expressions.Expression> updateExpression) + 0xe9 バイト

githubの問題に基づいて、試しました:

var c = ((IObjectContextAdapter) context).ObjectContext.CreateObjectSet<ProcessJob>();
c.Update(job => new ProcessJob
{
    Status = ProcessJobStatus.Processing,
    StatusTime = DateTime.Now,
    LogString = "Processing"
});

その結果、例外が発生します (おそらく、ここで報告されたものと同じエラー)

「EntityFramework.Reflection.DynamicProxy」には「EnsureMetadata」の定義が含まれていません

...

EntityFramework.Extended.dll!EntityFramework.Mapping.ReflectionMappingProvider.FindMappingFragment(System.Collections.Generic.IEnumerable itemCollection, System.Data.Entity.Core.Metadata.Edm.EntitySet entitySet) + 0xc1e バイト

EntityFramework.Extended.dll!EntityFramework.Mapping.ReflectionMappingProvider.CreateEntityMap(System.Data.Entity.Core.Objects.ObjectQuery クエリ) + 0x401 バイト

EntityFramework.Extended.dll!EntityFramework.Mapping.ReflectionMappingProvider.GetEntityMap(System.Data.Entity.Core.Objects.ObjectQuery クエリ) + 0x58 バイト

EntityFramework.Extended.dll!EntityFramework.Mapping.MappingResolver.GetEntityMap(System.Data.Entity.Core.Objects.ObjectQuery クエリ) + 0x9f バイト

EntityFramework.Extended.dll!EntityFramework.Extensions.BatchExtensions.Update(System.Linq.IQueryable ソース、System.Linq.Expressions.Expression> updateExpression) + 0x1c8 バイト

EF5 の最新バージョンを試し、最新バージョンが機能するかどうかを確認するために EF6 にアップグレードしましたが、同じ問題が発生します。Code First を使用します。

EntityFramework.Extensions コードがどのように機能するかを理解しようとしています。しかし、私たちのセットアップには理想的ではないストアド プロシージャまたは SQL の使用にフォールバックする必要があるかどうか疑問に思っています。

これらの問題が何であるかを知っている人はいますか?

4

1 に答える 1

3

このエラーは無視できることがわかりました。CLR ランタイム例外のデバッグ オプションをオンにしました。ソースコードをたどり、ダウンロードしてデバッグを開始しました。

最初にスローされる例外が予期されているようで、他のオプションで再試行します。残念ながら、別の問題に遭遇したため、正確な問題を調べる時間がありませんでしたが、それは別の質問の主題です。

于 2013-12-04T00:47:14.023 に答える