我在尝试使用 Entity Framework 删除对象时遇到问题,我之前查询上下文以获取我需要删除的对象列表,然后一一调用 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 = something 的所有对象,但 ID 它只是实体键的一部分,确实由 3 个字段组成,因此它像 n 千个项目一样附加并且使过程非常缓慢,这是我的一种行为无法理解,我总是这样删除对象,我从来没有遇到过这样的问题
有人可以有一个想法吗?
谢谢