我遇到的问题是我的单元测试有时会通过,有时会失败。我的单元测试使用PersistanceSpecification类来测试我的两个实体之间的ManyToMany关系。看起来我遇到了与此处描述的完全相同的问题:
是否还有其他人遇到此问题,如果是这样,您是否可以解决问题或解决问题而不放弃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();
答案 0 :(得分:1)
这实际上是PersistanceSpecification
类中的一个错误,并在 Fluent NH 中进行跟踪。
这里的错误是跟踪器: https://github.com/jagregory/fluent-nhibernate/issues/59