在实体框架中,您必须编写大量代码来保存或更新单个实体:
using (DataContext context = new DataContext())
{
context.Task.Attach(task);
if (task.ID == 0)
{
context.ObjectStateManager.ChangeObjectState(task, System.Data.EntityState.Added);
}
else
{
context.ApplyOriginalValues(task.GetType().Name, task);
}
context.SaveChanges();
}
在hibernate中它只是saveOrUpdate()
这不是关于懒惰,而是关于简短而干净。
答案 0 :(得分:4)
没有等价物。你真的必须这样写:
using (DataContext context = new DataContext())
{
context.Task.Attach(task);
if (task.ID == 0)
{
context.ObjectStateManager.ChangeObjectState(task, System.Data.EntityState.Added);
}
else
{
context.ObjectStateManager.ChangeObjectState(task, System.Data.EntityState.Modified);
}
context.SaveChanges();
}