NHibernate でドメイン モデルをマップしようとしています。ドメイン モデルは、私が考える DDD スタイルで実装されています。マッピングはほとんど機能しますが、コレクションでコレクション フィルターを使用しようとすると、次のような例外が発生します。コレクションは参照されていません。
コレクションの実装方法に問題があることはわかっています。私の質問: この方法で実装されたコレクションに対して nHibernate でコレクション フィルターを使用することは可能ですか、それとも単に忘れるべきでしょうか。つまり、nHibernate はこれで動作しません。
コードは次のとおりです。
Person
{
IList<Address> _addresses = new List<Address>();
public string FirstName {get; set;}
...
public void addAddress(Address address)
{
// ... do some checks or validation
_addresses.Add(address);
}
public void removeAddress(Address address) {...}
public ReadOnlyCollection<Address> Addresses
{
get { return new ReadOnlyCollection<Address>(_addresses); }
}
}
主な問題は、内部アドレス コレクションを公開したくないということです。nHibernate がフィールドと直接対話するように、field.camelcase-underscore アクセスを使用します。私は Hibernate in Action の本に取り組んできましたが、今はコレクション フィルターを扱う第 7 章にいます。
これを回避する方法はありますか。次のように内部コレクションを公開することで機能するようになりました。
public ReadOnlyCollection<Address> Addresses
{
get { return _addresses; }
}
しかし、私は本当にこれをしたくありません。
助けていただければ幸いです。
ジデ