我想弄清楚如何在nhibernate中将组件映射为主键,并且如果可能的话,还要使用流畅的nhibernate。如何映射也是NHibernate hbm xml(或者流利的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();
}
}
但是我w我们想知道的是如何使SpaceCoordinate组件作为一个整体成为唯一约束的主键。我如何将它映射到Nhibernate xml或者流利的nhibernate类图中?