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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top