1

我有两个使用 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);
    }
}

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

4

1 回答 1

0

无状态会话不会级联操作,因此如果它们在其他表中执行,它不会保存更改和指向数组元素的链接。

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

于 2011-10-04T10:41:24.367 回答