Entity Framework 4 обновить и вставить одну функцию - PullRequest
1 голос
/ 07 сентября 2010

Я перехожу с SubSonic на EF4. В моделях SubSonic была функция Save, если ключ модели был равен 0, вставка была выполнена, в противном случае обновление.

Есть ли способ сделать общую функцию сохранения как в SubSonic? Например, используя метод расширения?

Ответы [ 2 ]

8 голосов
/ 07 сентября 2010

Да, но вы должны сделать это сами. Попробуйте что-то вроде этого:

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();
  }
}
0 голосов
/ 03 декабря 2011

Я думаю, что немного лучшей версией будет общедоступная статическая пустота SaveOrUpdate (эта сущность T), где T: IEntity

...