2012-01-16 53 views
3

對於下面的代碼的實體,收到消息:不能附加已經存在

不能附加已經存在的實體。

C#代碼:

var con = (from c in cmsContentTable where c.ContentName == contentId select c).FirstOrDefault(); 
cmsContentTable.Attach(con); 
con.ContentData = "New Value"; 
cmsContentTable.Context.SubmitChanges(); 

爲什麼給這個錯誤 - 這是因爲騙子參考已經取得 時

var con = (from c in cmsContentTable where c.ContentName == contentId select c).FirstOrDefault(); 

做?

+1

如何爲您的ORM框架添加標籤? – CodesInChaos

+0

可能重複[無法附加已存在的實體](http://stackoverflow.com/questions/2605657/cannot-attach-an-entity-that-already-exists) –

回答

4

既然你已經從表中獲取的項目:

var con = (from c in cmsContentTable where c.ContentName == contentId select c).FirstOrDefault(); 

的上下文已經「連接」的對象。只要您從表格中拉出已存在的對象,情況就是如此。

如果您刪除行:

cmsContentTable.Attach(con); 

你應該罰款。

更有用的消息是「無法附加到已經附加到上下文的實體」,因爲這是實際發生的情況。