내 도메인에서 직원과 부서는 일대 다 양방향 관계를 가지고 있습니다. 자식 직원이이 작업을 동기화하게하려면 부서에있는 직원의 Set (Iesi for Hibernate)에 대한 '내부'액세스 필드가 있어야합니다. 그렇지 않으면 읽기 전용으로 공개됩니다. 그래서 같이 :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)에 접근을했다,하지만 난 이후 부서를 만들 수 없습니다 ._staff 필드 가상 NH는 행복하지 않습니다. 나는 필드를 가상의 속성으로 만들고 강제로 먹일 수 있다고 생각하지만, 도메인 클래스가 지나치게 지속성을 인식하도록 만드는 것처럼 느껴진다. 내가 NH 및 FNH와 내가 배우고
내가 관계 매핑에 좋은 프라이머를 필요로 알고 있지만,이 게시물에 대한 내 주요 질문은 내 도메인 클래스의 논리입니다 :
1)이 좋은 C# 프로그래밍 패턴 biderectional 관계에 설정된 읽기 전용?
2) 이것을 NHibernate에 더 유용하게 만드는 가장 좋은 방법은 무엇입니까?
공유해 주셔서 감사합니다.
Berryl
안녕하세요 제이미 늦은 크레딧을 제공해 죄송합니다. 논리를 뒤집고 _staff ISet을 내부적으로 볼 수 있다고 생각합니까? 그렇다면 매핑은 어떻게 보이나요? 좋은 응답을 보내 주셔서 다시 한 번 감사드립니다. – Berryl
필자는 FluentNH에게 유효한 프록시 유형으로 받아들이 기 위해 Employee 클래스의 Department setter를 내부로 보호해야했지만 이후에는 제대로 작동하는 것으로 보였습니다. – David