Oracle10gプロバイダを使用してOracle.DataAccessを使用して外部組織からデータを読み取っています。テーブルの1つにこれらのフィールドで構成される複合IDがあります。レコードの複合IDにnull値のキープロパティが含まれているデータベースからエンティティを読み込むにはどうすればよいですか?
course:
institutioncode: "X11"
coursecode: "N100"
campuscode: "A"
entryyear: 2011
entrymonth: 10
問題は、キャンパス・コードが外部プロバイダによってヌルの代わりに空にすることを許可されていることです。これにより、nHibernateは、コースエンティティの代わりにnull参照を含むコレクションを返します。
他のドメインオブジェクトは、このコースエンティティも参照するためにこれらのフィールドを使用します。したがって、これは実際にキーとして使用され、サロゲートキーを使用するように簡単に再マップすることはできません。
タグ3.1.0GAのソースから、この動作の原因となっているチェックはNhibernate.Type.ComponentType.Hydrate(IDataReader rs, string[] names, ISessionImplementor session, object owner)
にあります。これは、キープロパティがnullになる可能性を常に拒否しています。これにより、キープロパティとキー参照プロパティのNULL値をオプションにすることができますか?
これを実行しないと、nHibernateで直接このデータを読むことをお勧めしますか?
複合キーからキャンパスコードを離れることができますか?参照を制限するために、 'where'と' propertyref'を使うことができます。 – Firo
@Firo、回答として控えめな参照の例を教えていただけますか?私はあなたが何を意味するのか分かりません。 –