Переопределение SaveChanges и установка ModifiedDate, но как установить ModifiedBy?

У меня есть веб-приложение ASP.NET MVC3 с UI, Business (сущности) и Data (DbContext) слоями. Я использую Entity Framework 4.1 Code First. Сейчас я переопределяю DbContext.SaveChanges() в слое Data, чтобы я мог установить ModifiedDate для всех изменений, сделанных в любых объектах сущностей, которые реализуют мой IAuditable интерфейс. У меня есть статический класс DateProvider и метод (GetCurrentDate), который возвращает DateTime.Now (если я не запускаю тест, в этом случае он возвращает то, что я ему сказал).

Я хотел бы автоматически установить свойство ModifiedBy для текущего пользователя. Каков наилучший способ сделать это? Есть ли что-то встроенное во фреймворк, что позволит мне получить доступ к этой информации, или мне нужно настроить что-то вроде класса DateProvider? Это среда Active Directory, и мы используем WindowsAuthentication в IIS.

Вот мой код SaveChanges:

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

    if (changeSet != null)
    {
        foreach (var entry in changeSet.Where(c => c.State != EntityState.Unchanged))
        {
            entry.Entity.ModifiedDate = DateProvider.GetCurrentDate();
        }
    }
    return base.SaveChanges();
}
23
задан norepro 4 June 2013 в 20:48
поделиться