Entity Framework でオブジェクトを削除しようとすると問題が発生します。以前にコンテキストをクエリして、削除する必要があるオブジェクトのリストを取得してから、1 つずつ deleteobject を呼び出します。
IQueryable result = context.CustomObjects.Where(t=>t.Property = something)
foreach (CustomObject customObj in result)
{
context.DeleteObject(customObj);
}
DeleteObject EF を呼び出すと、次のような奇妙なクエリが実行されます。
exec sp_executesql N'SELECT
[Extent1].[Value1] AS [Value1],
[Extent1].[Value2] AS [Value2],
[Extent1].[Value3] AS [Value3],
FROM [CustomObject] AS [Extent1]
WHERE [Extent1].[ID] = @EntityKeyValue1',N'@EntityKeyValue1 int',@EntityKeyValue1=59
このクエリは、ID = 何かですべてのオブジェクトを検索するように見えますが、ID は実際には 3 つのフィールドで構成されているエンティティ キーの一部にすぎないため、n 千のアイテムのようにアタッチされ、プロセスが非常に遅くなります。これは動作です。理解できません。私はいつもこの方法でオブジェクトを削除しましたが、そのような問題は一度もありませんでした
誰かがアイデアを持つことができますか?
ありがとう