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();
}
}
}
这就是我的想法。虽然现在仍然有人调用network.AddUser(用户)而不是user.JoinNetwork(网络)的风险。 – 2010-04-02 13:46:42