2014-09-19 2 views
1

Я хочу реализовать функцию функциональности AddOrUpdate. Поэтому я пишу следующий код для каждого объекта добавить или обновить:с двумя одинаковыми объектами

var someEntity = 
        context.Set<SomeEntity>.FirstOrDefault(
         x => x.EntityId == 2) ?? new SomeEntity(); 

     context.Set<SomeEntity>().Attach(someEntity); 
     someEntity.Foo="foo"; 
     someEntity.Bar="Bar"; 
//... 
context.SaveChanges(); 

При использовании этого кода, когда объект, который удовлетворяет conditiob существует, она дублируется. Не могли бы вы посоветовать, чего мне не хватает. В моем понимании, если мы присоединяемся к уже прикрепленному объекту, его состояния не меняются.

ответ

1

Вы должны указать EntityState:

var someEntity = 
       context.Set<SomeEntity>.FirstOrDefault(
        x => x.EntityId == 2) ?? new ProcedureBillingOptionRecord(); 

context.Entry(someEntity).State = someEntity.EntityId == 0 ? 
            EntityState.Added : 
            EntityState.Modified; 
someEntity.Foo="foo"; 
someEntity.Bar="Bar"; 
//... 
context.SaveChanges(); 

Источник: Add/Attach and Entity States, Insert or update pattern

Смежные вопросы