私は次の表を持っています
tblChild
父コード 子番号 名前
FatherCode
およびChildNumber
はテーブルの主キーです。
このようなことがこのデータベースで非常に頻繁に発生するため (私はそれをまったく制御できません)、ID をマップするために次のクラスを作成しました。
public class ComposedId {
public virtual int FatherId {get;set;}
public virtual int ChildId {get;set;}
//More code implementing Equals and GetHashCode
}
さて、マッピングは次のようになります。
aMapper.Class<Child>(aClassMapper => aClassMapper.ComposedId(aComposedIdMapper =>
{
aComposedIdMapper.Property(aChild => aChild.Id); //Id's implementation is: public virtual ComposedId Id {get;set;}
}));
aMapper.Class<Child>(aClassMapper => aClassMapper.ComponentAsId(aChild => aChild.Id, aComponentAsIdMapper =>
{
aComponentAsIdMapper.Property(aComposedId => aComposedId.FatherId, aPropertyMapper => aPropertyMapper.Column("FatherCode"));
aComponentAsIdMapper.Property(aComposedId => aComposedId.ChildId, aPropertyMapper => aPropertyMapper.Column("ChildNumber"));
}));
しかし、テーブルにクエリを実行しようとすると、NHibernate は Id を列として取得しようとします。
何が間違っているのかわからず、これをこの構造でマップする方法をたくさん試しましたが、何も機能しません:(