【问题标题】:Clone a row with a composite key使用复合键克隆一行
【发布时间】: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


【解决方案1】:

检查here 确保您已定义主键。如果你还没有,那么任何非空字段都将用作连接的主键。

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 2017-07-12
    • 2012-08-25
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2021-10-26
    相关资源
    最近更新 更多