Nhibernate 是否有可能使用PersistenceSpecification和CheckList进行单元测试,以实现反向HasMany关系?

Nhibernate 是否有可能使用PersistenceSpecification和CheckList进行单元测试,以实现反向HasMany关系?,nhibernate,fluent-nhibernate,domain-driven-design,Nhibernate,Fluent Nhibernate,Domain Driven Design,这实际上是我关于Stackoverflow的第一个问题。我希望这不是最后一次,希望我自己能给出一些答案 我的问题很简单。我被一个NUnit测试困住了,我在测试一个反向的HasMany关系。 每次我调试它时,输出是“实际计数不等于预期计数…”。我在网上做了一些关于这个问题的广泛研究,一些人声称不可能进行这样的单元测试 这是我的例子。 员工映射代码: Id(x => x.ID).GeneratedBy.Identity(); HasMany(x => x.PositionHistor

这实际上是我关于Stackoverflow的第一个问题。我希望这不是最后一次,希望我自己能给出一些答案

我的问题很简单。我被一个NUnit测试困住了,我在测试一个反向的HasMany关系。 每次我调试它时,输出是“实际计数不等于预期计数…”。我在网上做了一些关于这个问题的广泛研究,一些人声称不可能进行这样的单元测试

这是我的例子。 员工映射代码:

 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();
var position2=新员工职位();
职位2.ExtraBenefit=353.00;
职位2.工资=23300.00;
位置2.区域=区域;
职位2.部门=部门;
职位2.年份=“2010”;
位置2.Comment=“kommentar igen…”;
位置2.历史=真实;
var positionList=新列表();
位置列表。添加(位置2);
新的PersistenceSpecification(会话,新的CustomEqualityComparer())
.CheckProperty(p=>p.ID,Int64.Parse(“1”))
.检查表(p=>p.PositionHistory,positionList,(emp,emp Position)=>emp.AddEmployeePosition(emp Position))
.验证应用程序();
我想将引用EmployeeAtPosition属性的Nullable()属性替换为Not.Nullable()

我有一个实体基类,负责比较实体甚至瞬态。 AddEmployeePosition()负责维护Employee.PositionHistory和EmployeePosition.EmployeeAtPosition的关系

当我在输出中查看Nhibernate SQL时,它似乎还可以。但由于某些原因,它不等于我准备的列表(职位列表)

其他有用的事实:我正在运行Nhibernate 3.0和匹配的fluent Nhibernate二进制文件。三天前把它们放下来了。在内存中使用SQLite进行映射测试

我真的很感激你的提示给我的所有好的新角度


/在一个下雪的斯德哥尔摩,向巴塞瑟致以最诚挚的问候。

嗯,没有回答。最好自己回答这个问题:D。
我在谷歌上搜索了一下后找到了答案,目前检查表方法存在一些问题。我改用CheckComponent,效果很好。现在,“父”对象插入到其“子”对象之前,因此没有错误。检查表试图做相反的事情,但根本不起作用……

嗯,没有答案。最好自己回答这个问题:D。
我在谷歌上搜索了一下后找到了答案,目前检查表方法存在一些问题。我改用CheckComponent,效果很好。现在,“父”对象插入到其“子”对象之前,因此没有错误。检查表试图做相反的事情,但根本不起作用……

我今天晚上也遇到了这个问题,只花了大约两个小时来处理这个非常奇怪的错误消息。在谷歌知道这不是我的错之前,浪费了很多时间检查每一行代码

根据这一点,我们不能将其与inverse=true一起使用。不幸的是,CheckComponentList不适用于我,我得到了相同的错误


我还发现了一个非常简单的关于逆的关键词,IMHO,这是一个非常糟糕的术语。

我今天晚上也收到了这个问题,我花了大约两个小时来处理这个非常奇怪的错误消息。在谷歌知道这不是我的错之前,浪费了很多时间检查每一行代码

根据这一点,我们不能将其与inverse=true一起使用。不幸的是,CheckComponentList不适用于我,我得到了相同的错误


还发现了一个非常简单的关于逆的关键词,IMHO,真是个糟糕的词。

Wow。。关于我的老问题的一点评论:-)我现在已经理解,您不能使用PersistenceSpecification来验证映射。实体之间的许多关系都是反向的,所以我手工做了这个映射测试。。关于我的老问题的一点评论:-)我现在已经理解,您不能使用PersistenceSpecification来验证映射。实体之间的许多关系都是反向的,所以我手工做了这个映射测试。