实体框架中Hibernate.saveOrUpdate()的等价物是什么

时间:2011-09-26 08:24:41

标签: hibernate entity-framework savechanges

在实体框架中,您必须编写大量代码来保存或更新单个实体:

 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()

这不是关于懒惰,而是关于简短而干净。

1 个答案:

答案 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();
 }