我正在使用Visual Studio 2012和Entity Framework 6.0 ,我正在做一些CRUD
操作,但我現在面臨一些挑戰。
我在一個表單中做了多個條目,想要一次更新或保存這些細節所以我現在這樣做:
通過逐個附加創建對象和存儲值以及添加/更新並保存更改。
但我可以像附加類的多個對像那樣做, savechanges
最後savechanges
我的意思是在循環之後。那麼通過附加多個對象來運行以保存多個保存savechanges
嗎?
例:
for(int i=0; i < comingrequestdata.Count(); i++)
{
ObjectExample obj = new ObjectExampole();
obj.Value1 = comingrequestdata[i].Value1;
obj.Value2 = comingrequestdata[i].Value2;
obj.Value3 = comingrequestdata[i].Value3;
context.ObjectExamples.Attach(obj);
}
context.SaveChanges();
我可以這樣做嗎?我有點困惑,請有人幫助我。
添加新項目並更新修改後的項目並不簡單,只需調用一個方法即可。您需要區分何時添加新項目或更新時間。但是,您可以提交多個要更新的項目或添加為新項目。例如,此方法可以幫助您同時添加和更新實體:
public SomeEntity AddOrUpdate(SomeEntity item)
{
var original = _context.SomeDbSet.Local.FirstOrDefault(p => p.Id == item.Id)
?? _context.SomeDbSet.FirstOrDefault(p => p.Id == item.Id);
if (original != null) // Updating
{
var entry = _context.Entry(original);
entry.CurrentValues.SetValues(item);
}
else
{
// New item
item = _context.SomeDbSet.Add(item);
}
return item;
}
在對此方法進行多次調用之後,在基於DbContext
的對DbContext
上調用SaveChanges
。
感謝大家的回答,我已經完成了這樣的事情。只需創建表格的對象,我的意思是類:
EntityFrameworkEntities db = new EntityFrameworkEntities();
Classname obj = new Classname();
obj.updatefirstvalue = something;
obj.updatesecondvalue = something;
db.Entry(obj).State = EntityState.Modified;
db.SaveChanges();
而已。我們還可以添加更多類我們想要使用savechanges更新的類,如:
foreach(var item in collection){
Classname obj = new Classname();
obj1.updatefirstvalue = item.something;
obj1.updatesecondvalue = item.something;
db.Entry(obj).State = EntityState.Modified;
}
db.SaveChanges();