我试图弄清楚如何将组件映射为 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; }
}
在流利的 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 类映射中映射它?