Добавление столбцов аудита в таблицу соединений Fluent NHibernate многие-ко-многим - PullRequest
3 голосов
/ 25 октября 2010

Я использую Fluent NHibernate для генерации схемы базы данных из классов сущностей .Net. У меня есть два класса User и Permission с отношением многие ко многим, и Fluent NHibernate правильно генерирует таблицу соединений UsersToPermissions в базе данных.

Как и ожидалось, в таблице соединений хранятся первичные ключи UserId и PermissionId. Я хочу также, чтобы к этой таблице были прикреплены данные аудита, такие как CreatedDate и UpdatedDate. Я уже реализовал это в таблицах без соединений с использованием перехватчиков, как описано в документации NHibernate .

Как реализовать столбцы аудита в таблице UsersToPermissions?

1 Ответ

5 голосов
/ 25 октября 2010

Это невозможно напрямую, потому что отношения не имеют свойств.

Самый простой способ - отобразить соединительную таблицу как объект и спроецировать стороны, используя LINQ-to-objects для простоты использования.

Например, предполагая, что мы называем промежуточную сущность UserPermission:

class User
{
    // Real relationship, mapped as bag or set with one-to-many UserPermission
    protected virtual ICollection<UserPermission> UserPermissions { get; set; }

    public virtual IEnumerable<Permission> Permissions
    {
        get { return from up in UserPermissions select up.Permission; }
    }

    public void Add(Permission permission)
    {
        UserPermissions.Add(new UserPermission
                            {
                                User = this,
                                Permission = permission
                            });
    }
}

Разрешение может быть точно таким же, если необходимо.

...