2012-05-26 24 views
0

我在嘗試修改時使用實體框架工作rm.StatusId = 3; 我收到標題問題錯誤。 也請給我鏈接,以瞭解與asp.netnetcontrolls實體框架工作的每一件事。屬性'StatusId'是對象的關鍵信息的一部分,無法修改

if (chk.Checked == true) 
{ 
    MAtt_RequestMaster rm = 
     ctx.MAtt_RequestMaster.SingleOrDefault(p => p.AutoID ==id); 
    rm.StatusId = 3; 
    ctx.SaveChanges(); 
} 
+0

您不能更改標識列的值。如果您想通過Google搜索瞭解更多關於實體框架工作的信息,如果你有一個你找不到答案的具體問題,那就來這裏問問題。 – Trisped

回答

0

IM與lambda表達式不太familliar,但我想你可以這樣做:發生

MAtt_RequestMaster rm = 
    ctx.MAtt_RequestMaster.SingleOrDefault(p => p.AutoID ==id); 

rm.YourStatusTable = (from x in ctx.YourStatusTable 
        where x.statusID == 3 
         select x).FirstOrDefault(); 

ctx.SaveChanges(); 
0

這個問題,因爲你引用的同一對象不止一次。這不是EF的限制,而是一個安全功能,以確保您不會插入具有兩個不同ID的相同對象。因此,要實現您正在嘗試執行的操作,只需創建一個新對象並將新創建的對象添加到數據庫即可。

**這個問題經常發生在循環內部。如果您正在使用while或foreach循環,請確保將新創建的對象放入循環體中。

試試這個:

MAtt_RequestMaster rm = new Matt_RequestMaster(); 
rm.StatusId = 3; 
ctx.MAtt_RequestMasters.Attach(rm); 
ctx.SaveChanges(); 
相關問題