コンポーネントを nhibernate の主キーとしてマップする方法と、可能であれば流暢な nhibernate でも同様にマップする方法を理解しようとしています。
問題のコンポーネントは、3D 座標の一意のセットです。オブジェクトは次のとおりです。
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; }
}
SpaceCoordinate をコンポーネントにする流暢な nhibernate では、次のようなマッピング クラスを作成します。
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 クラスマップでどのようにマッピングしますか?