Entity Framework 4.1 DbContext Override Свойство SaveChanges не загружается - PullRequest
0 голосов
/ 03 августа 2011

Я использовал код из вопроса Переопределить сохранение изменений для реализации аудита в моем приложении.Когда сущность добавляется, все замечательно.Однако при изменении сущности дата «CreatedOn» никогда не загружается.

Это всегда ноль, поэтому начальная дата "CreatedOn" удаляется из базы данных.

Я также попытался просмотреть коллекцию OriginalValues, сохраненную в объекте, и она заполняется для даты «ModifiedOn», но не для даты «CreatedOn».Оба поля заполняются в базе данных ... почему EF загружается, а другое не загружается?

public override int SaveChanges()
    {
        var changeSet = ChangeTracker.Entries<IAuditable>();

        if (changeSet != null)
        {
            foreach (DbEntityEntry<IAuditable> entry in changeSet)
            {
                switch (entry.State)
                {
                    case EntityState.Added:
                        entry.Entity.CreatedOn = DateTime.Now;
                        entry.Entity.ModifiedOn = DateTime.Now;
                        break;
                    case EntityState.Modified:
                        entry.Entity.ModifiedOn = DateTime.Now;

                        //entry.Entity.CreatedOn date always null here
                        break;
                }
            }
        }

         return base.SaveChanges();
    }

1 Ответ

2 голосов
/ 01 ноября 2011

Может быть, вы используете в контексте MVC? Если это так, то, возможно, это просто потому, что вы не помещаете свои свойства сущностей CreatedOn и ModifiedOn в скрытое поле вашей страницы. У меня есть эта проблема, и я решаю ее частично.

/*My Partial View View/Shared/HiddenSystemValues.cshtml */
@model Models.IAuditable
@Html.HiddenFor(model => model.CreatedOn)
@Html.HiddenFor(model => model.ModifiedOn)
...


/*In All My Pages */
...
@Html.Partial("HiddenSystemValues")
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...