这实际上是我在Stackoverflow上的第一个问题。我希望它不是最后一个,希望我会自己提供一些答案。
我的问题很简单。我坚持使用NUnit测试,我正在测试一个反向的HasMany关系。 每次我调试它,输出是“实际计数不等于预期计数...”。我已就网络问题进行了一些广泛的研究,有些人声称不可能做这样的单元测试。
这是我的例子。 EmployeeMapping代码:
Id(x => x.ID).GeneratedBy.Identity();
HasMany(x => x.PositionHistory).KeyColumn("Employee_id").Inverse().Cascade.All();
以下是EmployeePositionMapping的代码:
Id(x => x.ID).GeneratedBy.Identity();
References(x => x.EmployeeAtPosition).Cascade.All().Nullable();
单元测试是这样的:
var position2 = new EmployeePosition();
position2.ExtraBenefit = 353.00;
position2.Salary = 23300.00;
position2.Region = region;
position2.Department = department;
position2.Year = "2010";
position2.Comment = "kommentar igen...";
position2.History = true;
var positionList = new List<EmployeePosition>();
positionList.Add(position2);
new PersistenceSpecification<Employee>(Session, new CustomEqualityComparer<Employee, long>())
.CheckProperty(p => p.ID, Int64.Parse("1"))
.CheckList(p => p.PositionHistory, positionList, (emp, empPosition) => emp.AddEmployeePosition(empPosition))
.VerifyTheMappings();
我想将Nullable()属性替换为引用EmployeeAtPosition属性的Not.Nullable()。
我有一个实体基类,负责比较实体甚至瞬态。 AddEmployeePosition()负责为Employee.PositionHistory和EmployeePosition.EmployeeAtPosition维护关系。
当我在输出中查看Nhibernate SQL时似乎没问题。但由于某种原因,它与我准备的列表(positionList)
不相等其他有用的事实:我正在运行Nhibernate 3.0和匹配流畅的Nhibernate二进制文件。三天前下载了他们。使用SQLite InMemory进行映射测试。
我非常感谢你提示给我的所有新角度......
/最好的问候BacceSR-来自一个非常雪的斯德哥尔摩。
答案 0 :(得分:4)
嗯没有答案。最好自己回答这个:D。 好吧,我在一些谷歌搜索后找到了答案,目前CheckList方法存在一些问题。我使用了CheckComponent而且工作正常。现在“Parent”对象在其“Children”之前插入,因此没有错误。 CheckList尝试做相反的事情,根本不起作用......
答案 1 :(得分:0)
我今晚也遇到了这个问题,并且用这个非常奇怪的错误消息花了大约两个小时。在谷歌搜索之前浪费了很多时间检查每一行代码,知道这不是我的错,heheheh:D。
根据这个post,我们根本不能将它与inverse = true一起使用。不幸的是,CheckComponentList对我不起作用,我得到了同样的错误。
同样发现一个关于反向关键词的死简单explanation,恕我直言,真的是一个坏词。