私は上級のNHibernateユーザーではないので、これはいくぶん重要かもしれません、そして私はまだそれを発見していませんでした。
クラスについて考えてみましょう。
public class House
{
public int Id { get; set; }
public ISet<Room> Rooms
{
get;
set;
}
}
NHibernate Set要素を指定する場合、次のように記述するだけでは不十分です。
<set name="Rooms" />
代わりに、少なくとも次のように書く必要があります。
<set name="Rooms">
<key column="RoomId"/>
<one-to-many class="Room"/>
</set>
これはDRYの原則に違反しているようです。Setの場合、デフォルトは1対多の関係である必要があります。クラスはコレクションのジェネリック型から推測する必要があり、キー列として、コレクション要素のクラスの主キーを使用する必要があります。
これは私には合理的なデフォルトのように思えます。それでは、なぜNHiberbateはそれについて賢くなく、これらの余分な3行を入力する必要があるのでしょうか。