我正在使用 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 映射文件进行映射呢?
任何帮助将不胜感激,感谢阅读!