複合 ID を使用するデータ構造があります (これを単一に変更したくありません) 結合が空の場合、プロパティを null にマップする代わりに、空の結合にマップする多対 1 結合を除いて、すべて正常に読み込まれます。プロキシ オブジェクト。私は醜い回避策を書きました(以下を参照)。これに対する解決策はありますか?
プライベート ノード _Parent;
public Node Parent
{
get
{
return this._Parent;
}
set
{
this._Parent = Proxy.Check<Node>(value);
}
}
internal static class Proxy
{
public static T Check<T>(T obj) where T : PersistentObject
{
if (obj is NHibernate.Proxy.INHibernateProxy && obj != null)
{
try
{
int id = obj.ID;
return obj;
}
catch //Proxy only object cant retrieve ID
{
return null;
}
}
else
{
return obj;
}
}
}
マッピングファイルで始まる
<class name="Node" table="Node">
<composite-id>
<key-property name="ID"/>
<key-property name="VersionID"/>
</composite-id>
およびアクセス元
<many-to-one name="Node" class="Node" >
<column name="NodeID"/>
<column name="VersionID" />
</many-to-one>