Nhibernate 在多对多关系中插入双方的数据

Nhibernate 在多对多关系中插入双方的数据,nhibernate,fluent-nhibernate,nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我有两个实体,组和动作,它们有m:n关系。从UI中,可以将操作添加到组中,反之亦然。关联表包含“组id”和“操作id”列,因此这两个实体都指定了“hasmanytomany”关系。现在,如何从两端添加/删除项目,即 newGroup.Actions.Add(newAction); 及 从文档中,指定inverse只允许从一端进行修改。我在实体上使用添加和删除方法来完成此操作。下面是一个用户/组场景的示例 public class Group : Entity { //Construct

我有两个实体,组和动作,它们有m:n关系。从UI中,可以将操作添加到组中,反之亦然。关联表包含“组id”和“操作id”列,因此这两个实体都指定了“hasmanytomany”关系。现在,如何从两端添加/删除项目,即

newGroup.Actions.Add(newAction);


从文档中,指定inverse只允许从一端进行修改。

我在实体上使用添加和删除方法来完成此操作。下面是一个用户/组场景的示例

public class Group : Entity
{
    //Constructors and properties omitted

    public virtual void AddUser(User user)
    {
        if (users.Contains(user))
            return;

        users.Add(user);
        user.AddGroup(this);
    }

    public virtual void RemoveUser(User user)
    {
        if (!users.Contains(user))
            return;

        users.Remove(user);
        user.RemoveGroup(this);
    }
}

谢谢你的回复@Cole。如果可能,请您也发布AddGroup和RemoveGroup方法的代码。@Sundeep除了添加到的集合之外,它们是完全相同的。将“用户”替换为“组”,您就拥有了方法。现在,我明白了这是如何发生的。NHibernate仅允许在m:n关系中从非反向侧插入。这些辅助方法将通过附加所有者并使其看起来像是从非反向侧插入来帮助从反向侧插入。是的,这正是它们所做的。
public class Group : Entity
{
    //Constructors and properties omitted

    public virtual void AddUser(User user)
    {
        if (users.Contains(user))
            return;

        users.Add(user);
        user.AddGroup(this);
    }

    public virtual void RemoveUser(User user)
    {
        if (!users.Contains(user))
            return;

        users.Remove(user);
        user.RemoveGroup(this);
    }
}