【发布时间】:2012-02-16 20:55:29
【问题描述】:
这是我的问题:
域:我有以下实体:可以定位在 [位置] 的 [传感器]。这是一个多对多的关系。我将其拆分为两个一对多,以在 [Location] 处聚合 [Sensor] 的 [Position]。中间实体是 [SensorPosition]。
[SensorPosition] 的映射如下:
CompositeId().KeyReference(sp => sp.Sensor).KeyReference(sp => sp.Location);
References(sp => sp.Sensor).ForeignKey().Not.Nullable();
References(sp => sp.Location).ForeignKey().Not.Nullable();
Component(sp => sp.Position, p =>
{
p.Map(pos => pos.X);
p.Map(pos => pos.Y);
p.Map(pos => pos.Z);
});
我正在使用 CompositeId() 来强制在一个 [Location] 上仅限制一个 [Sensor]。 (同一个 [Sensor] 可以在不同的 [Location] 上,这是一个业务逻辑扭曲)
我的问题是:我可以在其中添加一个生成的主键(Id)吗?我已经尝试过了,但是在映射中使用 CompositeId() 时它没有被生成。或者有没有其他方法可以流畅地执行此约束?
【问题讨论】:
标签: nhibernate fluent-nhibernate mapping