有没有办法使用EF Code First
来完成一些简单的事情DELETE FROM Order WHERE OrderDate >= @minOrderDate AND OrderDate >= @maxOrderDate
我有一张表,我想删除至少10.000条记录。我认为在使用for-each循环删除它们之前先检索所有记录是相当低效的。
答案 0 :(得分:25)
您可以使用
ctx.Database.ExecuteSqlCommand(sqlDeleteStatement,
new SqlParameter("@minOrderDate", minDate),
new SqlParameter("@maxOrderDate", maxDate));
注意:接受的答案无法编译。
答案 1 :(得分:3)
您始终可以通过上下文发送原始SQL。 _context.Database.SqlQuery(sqlDeleteStatement, parameterList)
string sqlDeleteStatement = "DELETE FROM Order" +
"WHERE OrderDate >= @minOrderDate AND OrderDate >= @maxOrderDate";
List<SqlParameter> parameterList = new List<SqlParameter>();
parameterList.Add(new SqlParameter("@minOrderDate", minDate));
parameterList.Add(new SqlParameter("@maxOrderDate", maxDate));
_context.Database.SqlQuery(sqlDeleteStatement, parameterList);