Ane*_*lou 11 .net entity-framework entity-framework-5
我想做的很简单.我在db中有一个部件列表,我想根据更新列表删除/插入/更新它们.
主要问题是,当我想要替换一个条目时,我无法将它附加到上下文,因为旧的(待更新的)条目已经附加(通过先前的读取调用)并且抛出异常.
我带着3个想法来到这里.
是否有任何功能,如"context.entry.replace(oldEntry,newEntry)"或任何其他正确的方法来做到这一点?
IEnumerable<SoldPart> old = db.SoldParts.Where(sp=>sp.sessionId == sessionId);
var toDelete = old.Where(po=> !parts.Any(pu=>pu.id == po.id));
var toCreate = parts.Where(po => !old.Any(pu => pu.id == po.id));
var toUpdate = parts.Where(po => old.Any(pu => pu.id == po.id));
foreach (SoldPart item in toDelete)
{
db.SoldParts.Attach(item);
db.SoldParts.Remove(item);
}
foreach (SoldPart item in toCreate)
{
db.SoldParts.Add(item);
}
foreach (SoldPart item in toUpdate)
{
db.SoldParts.Attach(item);
db.Entry(item).State = EntityState.Modified;
}
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
Lad*_*nka 34
有自动方法可以从分离的实体更新附加实体的值,但它仅适用于标量/复杂属性.不在导航属性上:
deb.Entry(oldEntry).CurrentValues.SetValues(newEntry);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7659 次 |
| 最近记录: |