EntityState.Modified для обновления нескольких записей в одном операторе - PullRequest
0 голосов
/ 30 октября 2019

Чтобы обновить один столбец из нескольких записей с ограничением уникального ключа, я попытался использовать следующий код:

foreach (var product in Products)
{
    product.Position= Position;

    db.Entry(product).State = EntityState.Modified;
 }
 db.SaveChanges();

Ниже генерируется SQL

update "XXMES"."TB_PRODUCT"
set "POSITION" = :p0
where ("PRODUCT_ID" = :p1)

-- :p0: '6' (Type = Decimal)

-- :p1: '6586632' (Type = Int64)

Даже при обновленииВо всех строках одной транзакции EF генерирует SQL, который обновляет по одной записи за раз, что вызывает ниже исключение из-за ограничения уникального ключа для столбца, которое ожидается для сгенерированного sql, поскольку Position уникально. Я пытаюсь выяснить способ, SQL генерирует запрос для обновления всех записей за один раз, поэтому ограничение не будет нарушено. Пожалуйста, дайте мне знать, если есть обходной путь

ORA-00001: unique constraint (RWMES.TB_TRIM_PATTERN_SET_POS_UK) violated
...