我想弄清楚如何在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類圖中?