1

创建条件时,您可以添加适用于属性的限制。有两种创建限制的方法:

Restrictions.Eq(string propertyName, object value)
或者
Restrictions.Eq(IProjection projection, object value)

问题是,我不喜欢将属性名称作为字符串传递,因为如果它们发生变化,我的项目将照常编译,任何可能的命名不匹配只会在单元测试期间发现。我正在尝试实现 TDD,但它不会很快发生,所以我试图限制单元测试的依赖关系以检查错误(直到我们设法接受 TDD)。

有任何想法吗?提前致谢!

4

3 回答 3

4

使用 LINQ、QueryOver (NH3.x) 或NH Lambda 扩展(NH2.x) 或NHibernate 表达式扩展(NH1.2)

所有这些都比仅使用字符串具有更强的类型。

于 2010-08-31T21:39:02.067 回答
0

我能感觉到你的痛苦。

但是没有办法在标准 API 中使用投影来动态引用您的属性,就像您无法让 nHibernate 映射检测表或列名称更改一样。

在大多数情况下,使用“属性”逐步进行查找和替换。

于 2010-08-31T21:41:00.707 回答
0

只要你有完整的单元测试覆盖(你不是吗?)它不应该是一个问题,应该是:-)?

避免使用字符串作为属性名称的另一个原因是使用 Resharper 等重构无法修复这些引用。这就是 Fluent NHibernate 真正大放异彩的地方。

于 2010-09-01T06:49:18.043 回答