Лучший способ обновить запись, используя Entity Framework - PullRequest
0 голосов
/ 29 апреля 2018

Я хочу обновить таблицы, используя Entity Framework. Но я получаю ошибку.

Мой EfRepositoryBase класс реализует IEntityRepository. Что не так с этим методом?

public bool UpdateWithProperty(TEntity entity, params Expression<Func<TEntity, object>>[] properties)
{
    using (var context = new TContext())
    {
        context.Set<TEntity>().Attach(entity);

        var updatedEntity = context.Entry(entity);

        foreach (var property in properties)
        {
           updatedEntity.Property(property).IsModified = true;
        }

        updatedEntity.State = EntityState.Modified;
        context.SaveChanges();
    }

    return true;
}

Ошибка:

Невозможно вставить значение NULL в столбец «Имя пользователя», таблица «Nextt.dbo.Users»; столбец не допускает пустых значений. ОБНОВЛЕНИЕ не удается.

1 Ответ

0 голосов
/ 30 апреля 2018

Вы можете использовать как это.

    db.context.Attach(obj);
    DbEntityEntry entry = db.Entry(obj);
    foreach (var proprty in entry.OriginalValues.PropertyNames)
    {
        if(entry.CurrentValues.GetValue<object>(proprty) != null)
            if (!object.Equals(entry.GetDatabaseValues().GetValue<object>(proprty), entry.CurrentValues.GetValue<object>(proprty)))
            {
                entry.Property(proprty).IsModified = true;
            }
    }

   db.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...