Простой запрос на удаление с использованием EF Code First - PullRequest
7 голосов
/ 06 марта 2012

Есть ли способ выполнить что-то простое, например, используя EF Code First

DELETE FROM Order WHERE OrderDate >= @minOrderDate AND OrderDate >= @maxOrderDate

У меня есть таблица, из которой я хотел бы удалить не менее 10.000 записей.Я думаю, что было бы довольно неэффективно сначала извлечь все записи, прежде чем я смогу удалить их, используя цикл for-each.

Ответы [ 2 ]

26 голосов
/ 19 марта 2015

Вы можете использовать

ctx.Database.ExecuteSqlCommand(sqlDeleteStatement,
    new SqlParameter("@minOrderDate", minDate),
    new SqlParameter("@maxOrderDate", maxDate));

ПРИМЕЧАНИЕ. Принятый ответ не компилируется.

4 голосов
/ 06 марта 2012

Вы всегда можете отправить через сырой 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...