J'ai une situation où une table de message a une clé primaire (Id) et une clé étrangère (Site). Tout site peut créer un enregistrement de message, mais seul le site qui a créé l'enregistrement peut le mettre à jour. Le problème est que, par défaut, il sera mis à jour en fonction de l'identifiant et non de l'identifiant et du site. Je pourrais changer la clef primaire pour être un composé/composé composé de l'id et du site OU recours au SQL natif; Cependant, je me demandais s'il y avait un moyen d'ajouter des critères de mise à jour supplémentaires.Comment ajouter des critères supplémentaires à ma commande de mise à jour en utilisant NHibernate?
Par exemple, voici ce que vous obtenez par défaut:
public void MessageUpdate(Message oneMessage) { using(ISession session = SessionFactory.OpenSession()) using(ITransaction trans = session.BeginTransaction()) { session.Update(oneMessage); trans.Commit(); } }
Alors, comment dois-je faire cela dans NHibernate sans créer un identifiant composé ou en utilisant SQL natif:
Update MessageTable set MessageStatus = 2 where Id = ? and Site = ?;
En note, vous n'avez pas besoin de session.Update dans votre code. Plus d'informations ici http://www.tobinharris.com/past/2009/6/11/nhibernate-calling-update-unnecessarily/ – autonomatt