héritage de table de la carte comme un à une relation avec NHibernate
-
22-09-2019 - |
Question
J'ai une base de données qui a un-à-un modèle entre une personne et une adresse (qui utilise id personne). Cependant, je ne peux pas trouver un moyen de rendre la carte en utilisant NHibernate.
Ma structure de table est la suivante:
PersonTable PersonId PersonName PersonAge AddressTable PersonId CountryName StreetName StateName
Et je voudrais avoir quelque chose comme ce que la dernière classe:
PersonClass int Id string Name int Age Address HomeAddress AddressClass string Street string Country string State Person Owner
J'ai essayé avec la relation hasOne mais je ne pouvais pas réutiliser personID comme identifiant d'adresse.
Merci!
Edit:. J'ai oublié de mentionner que je suis en utilisant FluentNHibernate donc à la fois la cartographie fluide et XML sera bien
La solution 2
Je l'ai fait en utilisant Id (). GeneratedBy.Foreign () dans le champ Adresse carte de classe faisant référence à l'ID Person's et cela a fonctionné.
Merci!
Autres conseils
Le problème est que votre schéma de base de données ne représente pas un « A une » relation entre la personne et adresse. Il représente une relation « a beaucoup de »; Vous pouvez limiterez artificiellement être une adresse par personne, mais cela ne change pas le fait que le modèle est plusieurs adresses par personne.
Pour obtenir un « a un » relation, vous mettriez le AddressID sur le PersonTable le.
Je mapper en tant que composant de la personne. Dans la personne classmap ajouter ce qui suit:
Component(x => x.Address, m =>
{
m.Map(x => x.Street, "Street");
m.Map(x => x.State, "State");
// more here
});
Vive