Nhibernate PersistanceSpecification检查表在多对多关系上失败

Nhibernate PersistanceSpecification检查表在多对多关系上失败,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我的单元测试有时通过,有时失败。我的单元测试使用PersistanceSpecification类来测试我的两个实体之间的多个关系。我似乎遇到了与这里描述的完全相同的问题: 是否有其他人遇到过这个问题?如果是,您是否能够在不放弃PersistanceSpecification的情况下解决它或解决它 我认为这一切都是在我将集合公开为带有私有支持字段的IEnumerable而不是让属性直接访问底层集合时开始发生的 以下是我的实体及其映射的示例: public class UserHeaderMap

我的单元测试有时通过,有时失败。我的单元测试使用PersistanceSpecification类来测试我的两个实体之间的多个关系。我似乎遇到了与这里描述的完全相同的问题:

是否有其他人遇到过这个问题?如果是,您是否能够在不放弃PersistanceSpecification的情况下解决它或解决它

我认为这一切都是在我将集合公开为带有私有支持字段的IEnumerable而不是让属性直接访问底层集合时开始发生的

以下是我的实体及其映射的示例:

public class UserHeaderMap : ClassMap<UserHeader>
{
    public UserHeaderMap()
    {
        Id(x => x.UserId);

        HasManyToMany(x => x.Groups)
            .Table("USER_GROUP_COMPOSITE")
            .ParentKeyColumn("USER_ID")
            .ChildKeyColumn("GROUP_ID")
            .Access.CamelCaseField()
            .Cascade.All()
            .Inverse()
            .FetchType.Join();
    }
}

public class GroupHeaderMap : ClassMap<GroupHeader>
{
    public GroupHeaderMap()
    {
        Id(x => x.GroupId);

        HasManyToMany(x => x.Users)
            .Table("USER_GROUP_COMPOSITE")
            .ParentKeyColumn("GROUP_ID")
            .ChildKeyColumn("USER_ID")
            .Access.CamelCaseField();
    }
}

//Unit test runs the following (some things are omitted for brevity)
new PersistenceSpecification<UserHeader>(session)
                    .CheckList(x => x.Groups, groups, (x, g) => x.AddGroup(g))
                    .VerifyTheMappings();
public类UserHeaderMap:ClassMap
{
公共用户headermap()
{
Id(x=>x.UserId);
HasManyToMany(x=>x.Groups)
.表格(“用户组组合”)
.ParentKeyColumn(“用户ID”)
.ChildKeyColumn(“组ID”)
.Access.CamelCaseField()
.Cascade.All()
.Inverse()
.FetchType.Join();
}
}
公共类GroupHeaderMap:ClassMap
{
公共组头映射()
{
Id(x=>x.GroupId);
HasManyToMany(x=>x.Users)
.表格(“用户组组合”)
.ParentKeyColumn(“组ID”)
.ChildKeyColumn(“用户ID”)
.Access.CamelCaseField();
}
}
//单元测试运行以下内容(为了简洁起见,省略了一些内容)
新PersistenceSpecification(会话)
.检查表(x=>x.组,组,(x,g)=>x.添加组(g))
.验证应用程序();

这实际上是
PersistanceSpecification
类中的一个bug,在Fluent NH中进行跟踪

错误正在此处被跟踪: