Ajout de colonnes d'audit à un Fluent NHibernate many-to-many table de jonction
-
26-09-2019 - |
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
?
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.