我需要使用实体框架 4.1(POCO)单击一次按钮更新 100 条记录。我需要将修改后的记录保存在数据库中而不进行数据库往返(以避免性能问题)。
我已经看到了一些分离和附加的解决方案。
附加时出现错误 IEntityChangeTracker 的多个实例无法引用实体对象
所以先尝试分离,得到新的错误 The object cannot be detached because it is not attach to the ObjectStateManager
我正在使用存储库模式来获取实体列表并传递给 UI 层以在网格中进行绑定。
在按钮单击中,我将这些实体传回 DB 层以进行更新。
它工作正常,选择实体并执行 context.applychanges。由于性能问题,我需要避免这种往返。
public void Update(OPRPortCall portCall)
{
using (VMEntities context = new VMEntities())
{
context.Detach(portCall); //The object cannot be detached because it is not attached to the ObjectStateManager.
context.AttachTo("OPRPortCalls", portCall); //An entity object cannot be referenced by multiple instances of IEntityChangeTracker
context.ObjectStateManager.ChangeObjectState(portCall, EntityState.Modified);
context.SaveChanges();
}
}
建议我对此的任何解决方案。
克里斯托弗