2010-08-29 17 views
1

J'utilise NHibernate sur un projet. La base de données doit avoir des champs de date de création et d'utilisateur créateur sur les tables de relations, mais je ne souhaite pas mapper les relations aux domaines. Ma conception db est comme:Informations d'audit sur une table de relations avec NHibernate

school (id, name, credate, creuser) 
student (id, name, credate, creuser) 
school_student(id, school_id, student_id, credate, creuser) 

Pour school_student.id, j'utiliser autoincrement, pk, non null, donc je n'ai pas mapper. NHibernate gère automatiquement les relations, donc je n'ai pas à mapper school_id et student_id. Pour créditer, je peux utiliser la fonction getdate(), donc je n'ai pas besoin de mapper ce champ.

Mais pour creuser le champ, je ne peux pas penser à un moyen que je n'ai pas besoin de créer une classe de domaine pour la table school_student. Comment puis-je échapper à la création d'un domaine pour la table school_student? Existe-t-il un moyen d'envoyer des informations creuser à la base de données chaque fois que NHibernate insère un recort dans cette table?

Répondre

0

Vous pouvez utiliser SUSER_SNAME() comme valeur par défaut pour la colonne s'il s'agit d'une connexion directe.

Indirectement (par exemple via un site Web), vous devrez envoyer la valeur Context.User.Identity car le moteur de base de données ne sait pas qui est l'utilisateur final. Vous devrez le mapper dans nHibernate.

+0

Mais il s'agit d'une application Web et chaque utilisateur utilise la même chaîne de connexion. –