Я пытаюсь выяснить, как сопоставить компонент в качестве первичного ключа в nhibernate и, если возможно, также в беглом nhibernate.
Компонент, о котором идет речь, представляет собой уникальный набор трехмерных координат, вот объект:
public class SpaceLocation
{
public virtual SpaceCoordinate Coordinates { get; set; }
public virtual SpaceObject AtLocation { get; set; }
}
SpaceCoordinate - это структура, определяемая следующим образом:
public struct SpaceCoordinate
{
public int x { get; set; }
public int y { get; set; }
public int z { get; set; }
}
В беглом nhibernate, чтобы сделать SpaceCoordinate компонентом, я создал бы класс отображения следующим образом:
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();
}
}
Но я хотел бы знать, как сделать компонент SpaceCoordinate в целом первичным ключом с его уникальным ограничением. Как мне отобразить это в Nhibernate xml или в беглой таблице классов nhibernate?