Справочная информация:LINQ аудит и текущий пользователь с веб-приложением
У меня есть веб-приложение, для которого мне нужно сделать аудит базы данных для вставки/удаления/обновления (и, возможно, читает). Я использую LINQ как свой ORM. Используя некоторые идеи, которые я нашел в Интернете, я придумал способ использования атрибутов для украшения моих объектов, имеющих связанные таблицы аудита. Сама таблица аудита должна включать те же колонки с теми же типами, что и исходная таблица, в дополнение к полям для идентификатора и имени текущего пользователя, типу модификации, времени модификации и успешной операции. Аудит происходит во время SubmitChanges - мой контекст данных является абстрактным, и я наследую и переопределяю SubmitChanges в моей конкретной реализации. Контекст абстрактных данных на самом деле происходит из AbstractAuditableDataContext, который расширяет DataContext и добавляет свойство CurrentUser с заполнителями для текущего идентификатора пользователя и имени. По умолчанию это 0 и «система» для экземпляров, в которых нет зарегистрированного пользователя - скажем, во время регистрации или входа в систему, когда могут быть обновлены некоторые поля таблицы пользователя. Приложение написано на C# с использованием ASP.NET MVC.
Проблема:
Какой самый лучший способ для заполнения текущего свойства пользователя моего полученного контекста данных? Должен ли я создать класс утилиты, который вводится в AuditUtility, который проверяет, был ли установлен CurrentUser и, если нет, заполняет его. Для тестирования я бы издевался над этим, но в реальном приложении он, вероятно, использовал бы ленивый -гружать и получать/устанавливать его в сеансе. Или я должен изменить фабрику контекста данных (используемую всеми контроллерами) для выполнения этой функции. Я уже использую макет фабрики во время модульного тестирования, поэтому это не будет связано с созданием новых классов. Или должен быть сделан вывод за пределами фабрики и текущего пользователя, введенного во время создания контекста. Это позволило бы мне сделать «от имени» аудита.
Я понимаю, что это несколько субъективно, но я был бы признателен за любые мысли/впечатления, которые вы могли бы внести.
Спасибо.
Область контекста данных для каждого действия - это довольно недолго. – tvanfosson