1
我試圖用EF4更新內容列表。但是我還沒有找到辦法。我當前的代碼如下:在EF4中更新列表<Entity>
db.NotifContents.MergeOption = MergeOption.NoTracking;
List<NotifContent> notifContentList = db.NotifContents
.Where(u => u.FKID_Contact == contactId && !u.Sent && u.CanSendMail)
.ToList();
List<NotifContent> newNotifContentList = new List<NotifContent>();
foreach(NotifContent notifContent in notifContentList)
{
notifContent.NextMailSend = dtNextMailSend; newNotifContentList.Add(notifContent);
try
{
//db.CreateObjectSet<NotifContent>().Attach(notifContent);
//db.ObjectStateManager.ChangeObjectState(notifContent, System.Data.EntityState.Modified);
db.AddToNotifContents(notifContent);
ObjectStateEntry notifContentsEntry = db.ObjectStateManager
.GetObjectStateEntry(notifContent);
notifContentsEntry.ChangeState(EntityState.Modified);
db.SaveChanges();
}
catch (Exception exc)
{
}
}
但是由於實體附加到DataContext的第二次更新將始終失敗,可以理解。
如何在EF4中進行批量更新?
UPDATE
改變循環如下
foreach(NotifContent notifContent in notifContentList)
{
notifContent.NextMailSend = dtNextMailSend;
db.NotifContents.Attach(notifContent);
db.ObjectStateManager.ChangeObjectState(notifContent, EntityState.Modified);
}
db.SaveChanges();
,我收到以下錯誤: -
與已經在ObjectStateManager存在相同的密鑰的對象。 ObjectStateManager不能使用同一個鍵跟蹤多個對象。
什麼'db.AddToNotifContents'做? – 2012-02-23 13:40:24
它將實體添加到set no? – Johann 2012-02-23 13:54:19
對不起,當然,它是在對象上下文中生成的方法。 – 2012-02-23 14:02:36