私のドメインでは、従業員と部署は1対多の双方向関係を持っています。子供の従業員がこれを同期できるようにするために、私はDepartment内のEmployeeのSet(Iesi for Hibernate)のための 'internal'アクセスフィールドを持っています。nhibernateを使用した双方向の関係パターン
部門クラス:
protected internal ISet<Employee> _staff;
public virtual ReadOnlyCollection<Employee> Staff {
get { return new List<Employee>(_staff).AsReadOnly(); }
}
public virtual void AddStaff(Employee emp) {
emp.Department = this; }
}
Employeeクラス:そう同様
private Department _department;
public virtual Department Department {
set {
// check valid value, etc.
value._staff.Add(this);
}
}
私は(FNH)のマッピングAsField(Prefix.Underscore)にアクセスをしたが、I以来、 Department._staffフィールドの仮想NHを幸せではないことができません。フィールドを仮想的なプロパティにして強制的にフィードすることができると思いますが、ドメインクラスに永続性を過度に認識させているように感じます。
私はNHとFNHの両方を学んでいますが、私は関係マッピングで良いプライマーが必要だと知っていますが、私の主な質問は私のドメインクラスのロジックです:
1)これは良いC#プログラミングパターンですか? biderectional関係で読み取り専用に設定されていますか?
2)これをNHibernateでより使いやすくするための最良の方法は何ですか?
共有いただきありがとうございます。
Berryl
こんにちはジェイミー 申し訳ありませんが、これはうまく動作します。ロジックを反転して_staff ISetを内部的に見ることができると思いますか?もしそうならマッピングはどのように見えますか? 良い返答をしてくれてありがとう。 – Berryl
私は、有効なプロキシタイプとしてそれを受け入れるために、FluentNHにEmployeeクラスのDepartmentセッターを内部で保護させなければなりませんでしたが、その後はうまくいくように見えました。 – David