Je me demande quelle serait la meilleure conception pour persister une nouvelle entité enfant avec NHibernate sans écraser accidentellement le parent dans la base de données.NHibernate: Comment enregistrer une nouvelle entité sans écraser le parent:
Le problème que j'ai est que l'entité enfant ressemblera à quelque chose comme ceci:
class Child
{
Parent Parent;
// other fields
}
Mon problème est que l'enfant a été fourni à partir de la couche d'interface utilisateur ainsi que l'ID du parent, et que des moyens que l'identifiant Parent est fondamentalement non initialisé: il aura l'ID rempli mais tout le reste sera nul - car la seule façon de remplir ses champs serait un aller-retour supplémentaire dans la base de données pour les lire. Maintenant, si j'appelle Session.SaveOrUpdate(child)
sur NHibernate, que va-t-il se passer avec le parent? Je ne veux pas que NHibernate cascade sauvegarde le parent non initialisé car cela détruirait simplement les données dans la base de données. Comment les gens abordent ce problème? Des meilleures pratiques?
OK merci.Cela impliquerait un aller-retour supplémentaire dans la base de données pour récupérer le parent, même si je n'ai pas l'intention de faire quoi que ce soit avec les données parentes, ce que j'aurais préféré éviter. Il n'y a pas de bon moyen d'éviter cela? – PhantomDrummer
Utilisez Load() comme Trygve suggéré pour éviter de charger des données inutiles. – UpTheCreek
Il semble que ce qui se passe est que les enfants sont remplis directement dans l'interface utilisateur par une requête sans tenir compte du parent. Ce qui est suggéré est un principe général de conception dans lequel vous n'avez jamais d'enfants en dehors du parent. Vous n'ajoutez certainement pas de nouveaux enfants sans passer par le parent. – Sisyphus