PersistanceSpecification CheckList在多对多关系上失败

时间:2011-04-26 17:32:01

标签: nhibernate fluent-nhibernate

我遇到的问题是我的单元测试有时会通过,有时会失败。我的单元测试使用PersistanceSpecification类来测试我的两个实体之间的ManyToMany关系。看起来我遇到了与此处描述的完全相同的问题:

http://fluentnhibernate.lighthouseapp.com/projects/33236/tickets/170-persistencespecification-checklist-fails-on-many-to-many-relationship

是否还有其他人遇到此问题,如果是这样,您是否可以解决问题或解决问题而不放弃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();

1 个答案:

答案 0 :(得分:1)

这实际上是PersistanceSpecification类中的一个错误,并在 Fluent NH 中进行跟踪。

这里的错误是跟踪器: https://github.com/jagregory/fluent-nhibernate/issues/59