Я пытаюсь использовать метод DbEntityEntry.CurrentValues.SetValues (), чтобы упростить обновление существующего объекта значениями из DTO, не являющегося объектом (см .: http://blogs.msdn.com/b/adonet/archive/2011/01/30/using-dbcontext-in-ef-feature-ctp5-part-5-working-with-property-values.aspx)
У меня проблемы с удалением зависимости от DbEntityEntry (для насмешек, тестирования). Вот пример того, что я хотел бы сделать:
var entity = dbSet.Find(dto.Id);
var entry = context.Entry(entity);
entry.CurrentValues.SetValues(dto);
context.SaveChanges();
Я также рассмотрел:
EntityType entity = new EntityType() { Id = dto.Id };
context.Attach(entity);
var entry = context.Entry(entity);
entry.CurrentValues.SetValues(entity);
context.SaveChanges();
Из того, что я смог найти, оба кажутся разумными при работе с реальным DbContext, но когда я абстрагирую контекст в IMyContext, я теряю возможность получить DbEntityEntry для сущности, таким образом теряя опцию SetValues.
Есть ли способ обойти эту проблему, или мне нужно прикусить маркер и вручную установить измененные свойства объекта из DTO (потенциально много шаблонов для объектов со многими свойствами)?
(я довольно новичок в EF, и это мой первый вопрос о StackOverflow, поэтому, пожалуйста, будьте осторожны)