2010-07-12 4 views
0

Я пытаюсь использовать NHibernate в проекте. Все мои таблицы домена включают поле «CreatedBy», которое является внешним ключом для таблицы «Пользователи». Поскольку это приложение ASP.NET, единственной информацией, которую я имею о пользователе во время сохранения, является имя пользователя из файла cookie.NHibernate - сохранить идентификатор пользователя от имени пользователя

Каков наилучший подход для получения идентификатора пользователя и его сохранения в поле CreatedBy таблицы домена?

Например, было бы просто написать код в приложении, чтобы загрузить пользователя из имени пользователя и вставить его свойство UserId в свойство CreatedBy объекта домена перед его сохранением. Однако это было бы неуклюже (я должен был бы забыть делать все это при сохранении вновь созданного объекта домена), а также будет включать два обращения к базе данных, которые я бы предпочел избежать.

Что такое самый простой и элегантный способ сделать это?

Благодаря

Дэвид

ответ

1

слушателей событий является путь; вы можете увидеть учебник, охватывающий это здесь: Creating an Audit Log using NHibernate Events

+0

Да, похоже, что это параметры, или используйте элемент в файле сопоставления для вызова sproc. Спасибо – David

+0

Дэвид, я бы рекомендовал подход перехватчика, и все применимые объекты реализуют общий интерфейс - это, вероятно, самый доступный метод СУХОЙ. Мы делаем это для таких вещей, как IHaveCreationDate, IHaveLastModifiedDate и т. Д. – DanP

Смежные вопросы