私は NHibernate と Fluent NHibernate を使用して、ドメイン オブジェクトのマッピング ファイルを作成しています (回答が流暢な NHibernate または xml hbm 構文を使用しているかどうかは気にしません)。また、ドメイン オブジェクト内のコンポーネントを表す一連の列が一意であることを指定する方法がわかりません。
ドメイン オブジェクトは次のとおりです。
public class SpaceLocation
{
public SpaceCoordinate Coordinates { get; set; }
public SpaceObject AtLocation { get; set; }
}
ここに私が問題を抱えているコンポーネントがあります:
public struct SpaceCoordinate
{
public int x { get; set; }
public int y { get; set; }
public int z { get; set; }
}
SpaceObject AtLocation
この質問の目的上、心配しないでください。
したがって、SpaceCoordinate からコンポーネントを作成する方法はわかっていますが、同じ座標セットの挿入が重複しないようにしたいと考えています。そのためには、コンポーネント全体をユニークなものにしたいと考えています。
私が行こうとしている方向性を理解してもらうために、マッピング クラスについて私が持っているものを示します。
public class SpaceLocationMap : ClassMapWithGenerator<SpaceLocation>
{
public SpaceLocationMap()
{
Component<SpaceCoordinate>(x => x.Coordinates, m =>
{
m.Map(x => x.x);
m.Map(x => x.y);
m.Map(x => x.z);
});
}
}
この Fluent NHibernate マッピングの問題は、一意の制約を SpaceCoordinate の値にまとめて適用しないことです。それぞれを個別に一意に設定しようとしているわけではないことに注意してください。これは制限が厳しすぎるでしょう。
では、これを hbm または fluent マップ ファイルでどのようにマッピングしますか?
読んでくれてありがとう!!