私はこのようなデザインを持っています:
public class Employee {
//...
}
public class Company {
private IList<Employee> _employees;
public IList<Employee> Employees {
get { return _employees; }
set {
if (_employees == value) {
return;
}
_employees = value;
//Some logic here. Eg:
//Raise PropertyChanged
//Iterate over the new values to suscribe to some events, etc.
}
}
}
次のようなことをしようとすると:
var employees = session.Query<Company>().Fetch(x => x.Employees).ToList();
をスローしLazyInitializationException
ます:
ローディング コレクションへの不正アクセス
私が見つけた唯一の回避策は、ロジックをメソッドに移動し、このメソッドをパブリック (および仮想) にして、のすべてのインスタンスに対してメソッドをemployees
呼び出すことですが、リポジトリからそのメソッドを呼び出すので、それは好きではありません。
何か案は?