My (legacy, kann nicht geändert werden) Schema hat eine Eins-zu-Eins-Beziehung zwischen Benutzern und useraddress, mit einem zusammengesetzten Schlüssel:nHib 3.2 Zuordnung von Code kommt auf zusammengesetzte Schlüsseln
Users:
- username (PK)
- email (PK)
- firsname
- lastname
UsersAddresses:
- username (PK, FK)
- email (PK, FK)
- city
- street
Mein ursprünglichen Idee war es, ein <join
zu verwenden, sie alle zu derselben Klasse zu bringen:
public class UserDTO
{
public string Username { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string City { get; set; }
//etc...
}
aber ich weiß nicht, über die Abbildung:
Join("UsersAddresses", j=>
{
j.Table("UsersAddresses");
j.Fetch(FetchKind.Join);
j.Optional(false);
j.Key(k=>
{
//What here???
k.Column(c=>
{
c.Name("");
c.Name("");
});
k.ForeignKey("");
k.ForeignKey("");
});
});
Gibt es einen Weg, dies zu erreichen? Oder vielleicht sollte ich für eine Komponente oder eine Eins-zu-Eins-Zuordnung wählen ...
'c' ist vom Typ' IColumnMapper', der keine 'ForeignKey'-Funktion definiert. Irgendwelche anderen Ideen? –
Nun, du hast Recht. Es scheint also, dass es keine Möglichkeit gibt, Fremdschlüsselnamen für zusammengesetzte Schlüssel zu definieren. Aber warum kümmert es dich, du hast gesagt, dass deine Datenbank veraltet ist und nicht geändert werden kann und "ForeignKey" nur benötigt wird, um den Namen eines fremden Schlüssels im Falle eines Schema-Exports einzurichten, was du nicht tust. – NOtherDev
oh, also fehlt mir etwas grundlegend in meinem Verständnis von Mapping nach Code: Wie kann ich NHib mitteilen, welche Spalte in 'UsersAddresses' auf welche Spalte in' Users' verweist? (ie 'username -> benutzername_fk' etc.) –