C# 属性是对象的一部分';s的关键信息,无法修改,我需要修改它

C# 属性是对象的一部分';s的关键信息,无法修改,我需要修改它,c#,C#,场景 我正在开发一个程序,在这个程序中,我输入多个ID(它们是主键)并输入一次详细信息,因此,例如,如果我输入PA1、PA2和PA3,我需要保存所有具有相同详细信息的ID。为了实现这一点,我将id传递到一个字符串中,然后对每个循环执行一次for-each,目的是在每次循环中都更改id,同时仍然输入相同的细节。正如您在我的代码中所看到的 public async Task<ActionResult> MassCreate([Bind(Include = " refno,rec_fnam

场景

我正在开发一个程序,在这个程序中,我输入多个ID(它们是主键)并输入一次详细信息,因此,例如,如果我输入PA1、PA2和PA3,我需要保存所有具有相同详细信息的ID。为了实现这一点,我将id传递到一个字符串中,然后对每个循环执行一次for-each,目的是在每次循环中都更改id,同时仍然输入相同的细节。正如您在我的代码中所看到的

public async Task<ActionResult> MassCreate([Bind(Include = " refno,rec_fname,rec_lname,signature,date,time")] delivery delivery,  string hiddenIDnumber)
    {
        if (ModelState.IsValid)
        {
            hiddenIDnumber= hiddenIDnumber.Trim();

            List<string> listStrLineElements = hiddenIDnumber.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).ToList(); 
            foreach (string str in listStrLineElements)
            { 
                 delivery.refno = str; 
                db.dbo_delivery.Add(delivery);
                await db.SaveChangesAsync();
            }

          // db.dbo_delivery.Add(dbo_delivery);
           //  await db.SaveChangesAsync(); 
            return RedirectToAction("Success", "Delivery");
        }
public async Task MassCreate([Bind(Include=“refno,rec\u fname,rec\u lname,signature,date,time”)]delivery delivery,string hiddenIDnumber)
{
if(ModelState.IsValid)
{
hiddenIDnumber=hiddenIDnumber.Trim();
List listStrLineElements=hiddenIDnumber.Split(new[]{';'},StringSplitOptions.removeMptyEntries.ToList();
foreach(listStrLineElements中的字符串str)
{ 
delivery.refno=str;
db.dbo_delivery.Add(delivery);
等待db.saveChangesSync();
}
//db.dbo_delivery.Add(dbo_delivery);
//等待db.saveChangesSync();
返回操作(“成功”、“交付”);
}
错误 属性“refno”是对象键信息的一部分,无法修改

是由于refno是主键而导致的错误

在阅读中,个人使用
Common.DataContext.Detach(object);
解决了这个问题,但是我不确定如何实现这个问题

任何帮助都将不胜感激


关于< /p> 更新主键被认为是非常糟糕的做法。如果这个值需要改变,那么你应该认真考虑该属性是否应该用作主键。所以你有两个选项:

  • 停止将
    refno
    作为主键,然后添加另一个主键(例如int
    Id
    属性)。但是,您可以为
    refno
    值提供唯一约束
  • 添加新实体并删除旧实体,而不是更新实体

  • 我会犹豫是否将其称为“更新主键”。我只是更改主键以再次为其输入相同的数据。无论如何,我该怎么做?你说你不想将其称为更新主键,但你的下一句话表明你只是在更改主键?!我去更改了我的主键。更简单