Frage

Ich habe eine Datenbank, die eine Eins-zu-Eins-Beziehung zwischen einer Person und eine Adresse (die Verwendungen Person id) modelliert hat. Allerdings kann ich nicht einen Weg finden, die Karte mit NHibernate zu machen.

Meine Tabellenstruktur ist die folgende:

PersonTable

PersonId
PersonName
PersonAge

AddressTable

PersonId
CountryName
StreetName
StateName

Und ich möchte so etwas wie dies als letzte Klasse haben:

PersonClass

int Id
string Name
int Age
Address HomeAddress

AddressClass

string Street
string Country
string State
Person Owner

Ich habe versucht, mit hasOne Beziehung, aber ich kann nicht Wiederverwendung PersonId als Adresse Identifier.

Danke!

Edit: Ich habe vergessen zu erwähnen, dass ich bin FluentNHibernate mit so sowohl fließend Mapping und XML in Ordnung sein

.
War es hilfreich?

Lösung 2

Ich habe es Id () verwendet wird. GeneratedBy.Foreign () in der Karte Klasse Address es zu der Person ID Referenzierung und es hat funktioniert.

Danke!

Andere Tipps

Das Problem ist, dass Ihr Datenbankschema stellt keine „Hat One“ Beziehung zwischen Person und Adresse. Es stellt eine „hat viele“ Beziehung; Sie können es künstlich pro Person zu sein, eine Adresse einschränkend sein, aber das ändert nichts an der Tatsache, dass das Modell mehrere Adressen pro Person ist.

Um ein „Hat eine“ Beziehung, würden Sie die AddressID setzen auf dem die PersonTable.

Ich würde es als Bestandteil der Person zuzuordnen. In der Person ClassMap folgende hinzufügen:

 Component(x => x.Address, m =>
        {
            m.Map(x => x.Street, "Street");
            m.Map(x => x.State, "State");
            // more here
        });

Prost

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top