2017-03-01 107 views
1

方案該物業的對象的關鍵信息的一部分,不能被修改,我NEEDto修改

我的工作,我輸入多個ID(它們是主鍵)中的程序,一旦進入細節例如,如果我輸入PA1,PA2和PA3,則需要保存所有具有相同詳細信息的人。爲了達到這個目的,我已經將id傳遞給一個字符串,然後爲每一個做一個a,以便每個循環都改變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"); 
     } 

錯誤 屬性「引用號」是對象的關鍵信息的一部分,不能進行修改。

是我得到的錯誤,因爲refno是主鍵。

在閱讀個人已經解決了這個使用Common.DataContext.Detach(object);但是我不確定如何實現這一點。

任何幫助,將不勝感激。

Regards

回答

0

更新主鍵被認爲是非常糟糕的做法。如果這個價值確實需要改變,那麼你應該認真考慮這個財產是否應該被用作主要關鍵。所以,你有兩個選擇:

  1. 停止refno是一個主鍵,並添加另一個(例如一個int Id屬性)。但是,您可以給refno值一個唯一的約束。
  2. 而不是更新您的實體,添加一個新的和刪除舊的。
+0

我會毫不猶豫地稱之爲「更新主鍵」。我只是改變主鍵,再次輸入相同的數據。在任何情況下,我該如何去做#2 –

+0

你說你不想叫它更新主鍵,但你的下一句話坐在你只是改變主鍵?! – DavidG

+0

我去了,並改變了我的主鍵。簡單得多 –

相關問題