【发布时间】:2018-03-01 14:17:33
【问题描述】:
当我想克隆一行时出现以下错误:
对象关键信息的属性部分,不可修改。
但我不想编辑相应的行但想添加它!
var parametersDisplay = db.utilisations_parametres_affichages.Where(o => o.utpar_clie_id == originalClientId).ToList();
foreach (var parameterDisplay in parametersDisplay)
{
parameterDisplay.utpar_clie_id = copyClientId;
parameterDisplay.utpar_user_update = "Backoffice";
db.utilisations_parametres_affichages.Add(parameterDisplay); // <== Exception
db.SaveChanges();
}
我已尝试使用 EntityState.Added,但它也不起作用。
表格有两个主键,我只想编辑一个。
编辑:这是一个复合键,有 2 个字段
【问题讨论】:
-
一张表怎么能有2个主键?或有复合键(组合 2 列)?如果您分享您的表格结构以获得更好的答案,那就太好了。
-
看来,你的桌子没有PK。如果没有,则创建一个并再次测试您的代码。不要忘记更新您的 EDMX。
-
我的 edmx 是最新的,我有一个包含 2 列的复合主键。
-
您的代码正在使用现有参数显示并尝试对其进行编辑。您需要在循环内创建一个新的 parameterDisplay。然后按照您想要的方式设置属性。然后你就可以添加它了。
-
可以分享一下表结构吗?您包含哪个列进行PK。这些列是否可以为空?你有什么数据类型。
标签: c# .net sql-server entity-framework