如何在NHibernate中使用无状态会话添加多对多关系?

时间:2011-10-03 18:42:52

标签: nhibernate many-to-many stateless

我有两个使用NHibernate映射到DB的实体:

class Entity1
{
    public int Id { get; set; }
    public Entity2[] ReferencedEntities { get; set; }
}

class Entity2
{
    public int Id { get; set; }
}

对于Entity1,我还指定了与Entity2的多对多关系:

HasManyToMany(x => x.ReferencedEntities);

据我所知,内部NHibernate表示创建一些关系实体的多对多关系,如:

class Reference
{
    public Entity1 Entity1 { get; set; }
    public Entity2 Entity2 { get; set; }
}

我正在使用NHibernate无状态会话将这些实体添加到数据库中,如下所示:

using (var session = sessionFactory.OpenStatelessSession())
{
    session.Insert(entity1);
    foreach (var entity2 in entity1.ReferencedEntities)
    {
        session.Insert(entity2);
    }
}

但我也希望增加它们之间的关系。为此,我还需要保存关系实体。如何使用无状态会话添加多对多关系?我是否需要隐式指定关系实体,还是有其他方式?

1 个答案:

答案 0 :(得分:0)

无状态会话不会进行级联操作,因此如果在其他表中执行这些操作,它将不会保存更改和指向arrayelements的链接。

不必要的选择通常是错误/错误代码的标志,例如UnsavedValue()Equals()``GetHashCode()