使用EF Code First简单删除查询

时间:2012-03-06 11:20:22

标签: entity-framework delete-row

有没有办法使用EF Code First

来完成一些简单的事情
DELETE FROM Order WHERE OrderDate >= @minOrderDate AND OrderDate >= @maxOrderDate

我有一张表,我想删除至少10.000条记录。我认为在使用for-each循环删除它们之前先检索所有记录是相当低效的。

2 个答案:

答案 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);