1
나는 NHibernate를 사용하여 사용자와 네트워크 간의 다 대다 관계를 지속합니다. 다음과 같이 User 클래스와 Network 클래스를 모두 설정하여 각 컬렉션을 ReadOnlyCollections로 노출하여 기본 목록에 직접 액세스하지 못하도록합니다. 사용자를 네트워크에 추가 할 수있는 유일한 방법은 "JoinNetwork"기능을 사용하는 것입니다. 그러나 수집이 읽기 전용이므로 사용자의 네트워크 목록에 사용자를 추가하는 방법을 알아낼 수 없습니다.ReadOnlyCollection을 사용하여 양방향 다 대다 관계를 설정하지 못하게 함
public class User
{
private ISet<Network> _Networks = new HashedSet<Network>();
public ReadOnlyCollection<Network> Networks
{
get
{
return new List<Network>(_Networks).AsReadOnly();
}
}
public void JoinNetwork(Network network)
{
_Networks.Add(network);
// How do I add the current user to the Network's list of users?
}
}
public class Network
{
private ISet<User> _Users = new HashedSet<User>();
public ReadOnlyCollection<User> Users
{
get
{
return new List<User>(_Users).AsReadOnly();
}
}
}
내가 생각한 것입니다. user.JoinNetwork (네트워크) 대신 network.AddUser (사용자)를 호출하는 사람의 위험은 여전히 존재하지만. –