相关疑难解决方法(0)

EntityFramework 6.0每行生成一个DELETE

我在聚簇索引上删除了大约5000行我的表,而EF需要将近30秒才能完成.

记录生成的SQL显示它正在为每一行执行一次删除:

DELETE [dbo].[Table]
WHERE ([ColumnID] = @0)
Run Code Online (Sandbox Code Playgroud)

所以共有5000笔交易.

我已经尝试批量调用SaveChanges(),但这似乎没有提高性能,或改变上述行为.

//loop
{
    //get batch
    db.Table.RemoveRange(batch);
    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

我看了一些其他问题,指出了每行执行删除命令的这个缺陷,但之后没有提出建议: 如何在Entity Framework中删除多行(没有foreach)

有没有办法阻止EF每行执行一个命令?如果可能的话,我想避免使用内联SQL.

c# entity-framework delete-row

4
推荐指数
1
解决办法
257
查看次数

使用linq删除Foreach

以下语句应该从allCars中删除someCars,并且它可以工作,但我想知道是否有更好的解决方案,只专门使用linq

foreach (var car in someCars) 
{
    db.allCars.DeleteObject(car); 
}
Run Code Online (Sandbox Code Playgroud)

请注意,db是db实体的实例.

任何帮助将非常感激.

linq entity-framework

3
推荐指数
1
解决办法
2762
查看次数

如何将数组传递给执行存储命令?

如何将由逗号分隔的整数数组ExecuteStoreCommand作为参数传递给实体中我无法执行此操作:

this.ObjectContext.ExecuteStoreCommand("INSERT INTO SurveyPatientListMrns 
  (UserData, MrnId) SELECT DISTINCT '{0}' , MrnId 
FROM PatientVisits WHERE (FacilityId = {1})
AND (UnitId IN ({2}))", userData, facilityId, (string.Join(",", unitIds)));
Run Code Online (Sandbox Code Playgroud)

(string.Join(",", unitIds))是一个字符串,由于逗号,我无法将其转换为整数.我怎么能传递参数呢?

仅供参考,unitIds是一个整数数组

c# entity-framework-4

2
推荐指数
1
解决办法
1530
查看次数

使用Entity Framework删除SQL IN方式

我想删除EF5中的多行.

我发现的更接近的是 如何在Entity Framework中删除多行(没有foreach)

由于我需要使用LINQ(SQL IN)版本并且我不想执行SQL,因此我想知道如何继续这样做.

我有一个列表,ID's我需要将它传递给IN.我该如何实施?LINQ to Entities(EF)

尝试做的SQL版本:

DELETE FROM TEST WHERE TESTID IN (2,3,4,5)
Run Code Online (Sandbox Code Playgroud)

我需要从中传递IN参数LIST<ID>.

在EF中实现这一目标的最佳方法是什么?

谢谢

c# linq entity-framework

0
推荐指数
1
解决办法
230
查看次数