J'ai une classe qui ressemble à ceci:Comment mapper deux objets qui se référencent mutuellement dans NHibernate?
public class Job
{
public Company Company {get;set;}
public Job JobForCompanyA {get;set;}
public Job JobForCompanyB {get;set;}
}
Les emplois pour les deux sociétés feront référence à l'autre, par exemple:
var jobA = new Job { Company = Company.CompanyA };
var jobB = new Job { Company = Company.CompabyB };
jobA.JobForCompanyB = jobB;
jobB.JobForCompanyA = jobA;
Le problème est que si je la carte ci comme NHibernate, il ne peut pas les sauvegarder ... puisque chaque objet Job référence l'autre, vous devez en enregistrer un pour obtenir le PK, mais vous ne pouvez pas le faire car il fait référence à l'autre (non sauvegardé) Job, donc vous avez un problème de poule et d'oeuf. Du point de vue db, je pourrais créer une table de mappage qui mappe les Jobs de la société A aux Jobs de la société B. Y at-il un moyen de mapper NHibernate sans que je doive changer l'apparence de mon objet entité? Je sais que je pourrais ajouter des propriétés de liste et des hacks pour le faire comme une relation normale de plusieurs à plusieurs, mais cela doit être un modèle pour lequel quelqu'un a une meilleure solution. J'utilise Fluent NHibernate, donc vous pouvez me donner des solutions en utilisant les mappings NHUBernate ou NHibernate XML Fluent.
Si vous avez le pouvoir changer l'identité à quelque chose qui peut être fait par NHibernate pour vous (hilo, guid.comb, etc). – anonymous
Je ne vois pas comment cela réglerait le problème. Le problème est qu'avec la manière dont les tables de base de données sont configurées maintenant, les FK sur la table ne permettraient jamais à un Job d'être sauvegardé sans l'ID de l'autre Job (qui n'est pas non plus sauvegardé). Donc je pense que je dois changer mon schéma de base de données. –
Oublié les contraintes de DB, désolé. – anonymous