這裏是我的問題:小學和組合鍵與功能NHibernate
域名:我有以下實體:[傳感器]可以定位在[位置]。這是一種多對多的關係。我將它分解爲兩個一對多來聚合[位置]上[傳感器]的[位置]。中間實體是[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()在一個[位置]執行僅一個[傳感器]的約束。 (相同的[傳感器]可以在不同的[位置],這是一個業務邏輯扭曲)
我的問題是:我可以添加一個生成的主鍵(Id)到這?我試過了,但在映射中沒有生成CompositeId()。或者有沒有其他的方式來強制執行這個約束流利地?
謝謝,這使我的測試通過。 – Cortlendt