Question

J'utilise Fluent NHibernate pour générer un schéma de base de données à partir des classes d'entités .Net. J'ai deux classes User et Permission avec plusieurs à plusieurs, et Fluent NHibernate génère correctement un UsersToPermissions de table de jonction dans la base de données.

Comme prévu, la table de jonction est de stocker les clés primaires UserId et PermissionId. Ce que je suis désireux est d'avoir également des informations d'audit sont joints au présent tableau tel que CreatedDate et UpdatedDate. Je l'ai déjà mis en oeuvre sur les tables non de jonction en utilisant des intercepteurs comme décrit dans le documentation NHibernate .

Comment puis-je mettre en œuvre des colonnes d'audit sur la table UsersToPermissions?

Était-ce utile?

La solution

Il est impossible directement, parce que les relations ne sont pas des propriétés.

Le plus simple est de cartographier la table de jonction en tant qu'entité, et projeter les côtés à l'aide d'objets LINQ à pour la facilité d'utilisation.

Par exemple, en supposant que nous appelons l'entité intermédiaire 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
                            });
    }
}

L'autorisation peut avoir exactement la même chose si nécessaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top