Я новичок в Entity Framework 4.1. Я начинаю писать новое приложение, используя EF в качестве моего DAL. Я использую классы POCO (используя шаблон POCO t4) с первым подходом к базе данных.
Мой GenericRepository получил ниже Метод обновления
public void Update(TEntity entity)
{
if (entity == null)
{
throw new ArgumentNullException("entity");
}
_context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
//_objectSet.ApplyCurrentValues(entity);
}
У меня есть gridview, который привязывается к объекту ObjectDataSource с UpdateMethod = "UpdateStore", который принимает только один параметр, следующим образом ...
public void UpdateStore(Store franchise)
{
unitOfWork.StoreRepository.Attach(franchise);
unitOfWork.StoreRepository.Update(franchise);
unitOfWork.SaveChanges();
}
У меня есть пара вопросов здесь:
Когда я вижу документацию для ApplyCurrentValues , это доказывает, что я должен использовать это для обновления значений, но это не работает (как вы можете видеть в приведенной выше строке с комментариями). Затем, когда я пытаюсь с ObjectStateManager.ChangeObjectState, это работает. В чем разница между этими двумя подходами.
Как видите, я сначала присоединяюсь, а затем применяю метод обновления. Могу ли я объединить состояние присоединения и обновления в моем методе обновления GenericRepository. Есть ли какие-либо подводные камни в этом?