Я хотел бы создать общий метод обновления в ObjectContext, используя общий класс. Мне нужно закодировать все свойства и обновить их на основе общего объекта, который я передаю моему универсальному методу обновления. Метод обновления:Как обновить свойства общего объекта в объекте ObjectContext EF?
public void Update(T entity)
{
if (entity == null)
{
throw new ArgumentNullException("entity");
}
var propertiesFromNewEntity = entity.GetType().GetProperties();
// I've a method that return a entity by Id, and all my entities inherits from
// a AbstractEntity that have a property Id.
var currentEntity = this.SelectById(entity.Id).FirstOrDefault();
if (currentEntity == null)
{
throw new ObjectNotFoundException("The entity was not found. Verify if the Id was passed properly.");
}
var propertiesFromCurrentEntity = currentEntity.GetType().GetProperties();
for (int i = 0; i < propertiesFromCurrentEntity.Length; i++)
{
propertiesFromCurrentEntity.SetValue(propertiesFromNewEntity.GetValue(i), i);
}
}
Но это не работает, потому что свойства передаются по значению, правильно? Итак, есть способ изменить текущие свойства объекта?
OBS: после обновления, вставки и удаления методов моя инфраструктура вызывает myContext.SaveChanges().
Вы вызываете SetValue в массиве свойств ... Я не думаю, что это то, что вы намеревались делать;) –