gpt4 book ai didi

c# - 我应该如何正确使用 Fluent NHibernate.Testing CheckList?

转载 作者:行者123 更新时间:2023-11-30 15:43:37 25 4
gpt4 key购买 nike

我正在尝试使用 persistence specification testing内置于 FNH。 CheckList 方法似乎是最近添加的,但是旧的 CheckEnumerable 已经被弃用,所以我假设 CheckList 是稳定的。

我的测试代码看起来与此类似:

new PersistenceSpecification<Parent>(session)
.CheckProperty(x => x.Foo, 123)
.CheckList(x => x.Children,
new Child[] { new Child { Name = "Bob" } },
(p, c) =>
{
p.Children.Add(c);
c.Parent = p;
})
.VerifyTheMappings();

请注意,在映射中,Parent 拥有关系(有 Cascade.AllDeleteOrphan()没有).

当我运行它时,我得到了可怕的 “无法将 NULL 值插入...” SQL Server 错误消息,因为 NHibernate 没有设置 ParentId Child 实体。与忘记在两端设置关联时发生的情况相同。

我用断点进行了检查,lambda 中的代码甚至没有执行,这显然是关联设置不正确的原因。

映射本身是完全正确的;我可以编写普通代码来创建和插入实体。只是 CheckList 方法我无法正常工作。

我做错了什么?

最佳答案

我不确定为什么,但看起来您确实需要使用 CheckComponentList 而不是 CheckList。我不确定 CheckList 做了什么或者它现在是否正常工作,但我查看了 SQL 跟踪并且 CheckComponentList 正在生成正确的语句。

CheckComponentList 除非明确指定,否则使用默认的相等比较器,对于不覆盖 Equals 的引用类型,这是引用相等性,因此覆盖是至关重要的Equals 在子实体类中或使用采用 IEqualityComparer 参数的 CheckComponentList 重载之一。

关于c# - 我应该如何正确使用 Fluent NHibernate.Testing CheckList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6657695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com