Methods 实体框架4更新并插入一个函数

Methods 实体框架4更新并插入一个函数,methods,insert,entity-framework-4,save,Methods,Insert,Entity Framework 4,Save,我正在从亚音速迁移到EF4。在亚音速模型中,有一个名为Save的函数,如果模型的键为0,则执行插入,否则执行更新 有没有一种方法可以像在亚音速中一样实现通用的保存功能?对于使用扩展方法的exmaple?是的,但您必须自己做。试着这样做: public interface IEntity { int Id { get; set; } } ... public void SaveOrUpdate<T>(T entity) where T : IEntity { using (

我正在从亚音速迁移到EF4。在亚音速模型中,有一个名为Save的函数,如果模型的键为0,则执行插入,否则执行更新


有没有一种方法可以像在亚音速中一样实现通用的保存功能?对于使用扩展方法的exmaple?

是的,但您必须自己做。试着这样做:

public interface IEntity
{
  int Id { get; set; }
}

...

public void SaveOrUpdate<T>(T entity) where T : IEntity
{
  using (var context = new MyContext())
  {
    if (entity.Id == 0)
    {
      context.AddObject(entity);
    }
    else
    {
      context.Attach(entity);
      context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
    }

    context.SaveChanges();
  }
}
公共接口的可扩展性
{
int Id{get;set;}
}
...
公共无效保存或更新(T实体),其中T:entity
{
使用(var context=new MyContext())
{
if(entity.Id==0)
{
AddObject(实体);
}
其他的
{
上下文。附加(实体);
context.ObjectStateManager.ChangeObjectState(实体,EntityState.Modified);
}
SaveChanges();
}
}

是的,但你必须自己做。试着这样做:

public interface IEntity
{
  int Id { get; set; }
}

...

public void SaveOrUpdate<T>(T entity) where T : IEntity
{
  using (var context = new MyContext())
  {
    if (entity.Id == 0)
    {
      context.AddObject(entity);
    }
    else
    {
      context.Attach(entity);
      context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
    }

    context.SaveChanges();
  }
}
公共接口的可扩展性
{
int Id{get;set;}
}
...
公共无效保存或更新(T实体),其中T:entity
{
使用(var context=new MyContext())
{
if(entity.Id==0)
{
AddObject(实体);
}
其他的
{
上下文。附加(实体);
context.ObjectStateManager.ChangeObjectState(实体,EntityState.Modified);
}
SaveChanges();
}
}

我认为更好一点的版本会更好
公共静态void SaveOrUpdate(这个T实体),其中T:IEntity

我认为更好一点的版本会更好 公共静态void SaveOrUpdate(此T实体),其中T:entity