Как заполнить свойства в объекте EF непосредственно перед сохранением? - PullRequest
0 голосов
/ 09 июня 2011

У меня есть такая сущность.Допустим, имя является единственным:

public class MyEntity
{
    public Guid Id { get; set; } // immutable
    public string Name { get; set; } // can be changed

    // These are not exposed on the domain layer.  They're just bookkeeping fields.
    public string CreatedBy { get; set; }
    public DateTime DateCreated { get; set; }
    public string UpdatedBy { get; set; }
    public DateTime DateUpdated { get; set; }
}

Если я заполню 2 «обновленных» поля перед вызовом SaveChanges (), моя сущность будет ошибочно помечена как измененная, если Имя не изменилось.Поэтому мне нужно событие в DbContext для подключения, чтобы заполнить эти 2 поля непосредственно перед фиксацией единицы работы, но только для сущностей, которые фактически изменились.

Существует ли такое событие?Может ли nHibernate сделать это?

1 Ответ

3 голосов
/ 09 июня 2011

В ObjectContext API у вас есть событие SavingChanges непосредственно на ObjectContext. Вы можете обработать это событие и использовать ObjectStateManager, чтобы найти все измененные / добавленные объекты и работать с ними по мере необходимости.

В обоих ObjectContext API и DbContext API вы можете напрямую переопределить SaveChanges метод и сделать то же самое.

Свободный NHibernate - это просто расширение NHibernate для свободного отображения в коде. NHibernate гораздо лучше поддерживает такие сценарии - он предлагает пользовательских прослушивателей , чтобы справиться с этим.

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