Ich versuche herauszufinden, wie man eine Komponente als Primärschlüssel in nhibernate und wenn möglich auch in fluent nhibernate zuordnen kann.
Bei der fraglichen Komponente handelt es sich um einen eindeutigen Satz von 3D-Koordinaten, hier ist das Objekt:
public class SpaceLocation
{
public virtual SpaceCoordinate Coordinates { get; set; }
public virtual SpaceObject AtLocation { get; set; }
}
SpaceCoordinate ist eine Struktur, die wie folgt definiert ist:
public struct SpaceCoordinate
{
public int x { get; set; }
public int y { get; set; }
public int z { get; set; }
}
In fluent nhibernate, um SpaceCoordinate zu einer Komponente zu machen, würde ich eine Mapping-Klasse wie diese erstellen:
public class SpaceLocationMap : ClassMapWithGenerator<SpaceLocation>
{
public SpaceLocationMap()
{
References(x => x.AtLocation);
Component<SpaceCoordinate>(x => x.Coordinates, m =>
{
m.Map(x => x.x);
m.Map(x => x.y);
m.Map(x => x.z);
}).Unique();
}
}
Aber was ich gerne wissen würde, ist, wie man die SpaceCoordinate-Komponente als Ganzes zum Primärschlüssel mit seiner eindeutigen Einschränkung macht. Wie würde ich dies in Nhibernate xml oder in einer fließenden Nhibernate Classmap abbilden?