首页 > 解决方案 > EntityState.Modified 以在单个语句中更新多条记录

问题描述

要更新具有唯一键约束的多条记录的单列,我尝试使用以下代码

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

标签: c#entity-frameworkchange-tracking

解决方案


推荐阅读