创建条件时,可以添加适用于属性的限制。创建限制有两种方法:
Restrictions.Eq(string propertyName, object value)
或
Restrictions.Eq(IProjection projection, object value)
事情是,我觉得将属性名称作为字符串传递并不舒服,因为如果它们发生变化,我的项目将照常编译,并且只有在单元测试期间才能找到任何可能的命名不匹配。我正在尝试实现TDD,但它不会很快发生,所以我试图限制单元测试的依赖性来检查错误(直到我们设法接受TDD)。
有什么想法吗? 提前谢谢!
答案 0 :(得分:4)
使用LINQ,QueryOver(NH3.x)或NH Lambda Extensions(NH2.x)或NHibernate Expression Extensions(NH1.2)
所有这些都比仅仅使用字符串更强类型。
答案 1 :(得分:0)
我能感受到你的痛苦。
但是没有办法使用条件API中的投影为您的属性添加动态引用,就像您无法使nHibernate映射检测到表或列名更改一样。
在大多数情况下,使用“属性”逐步执行查找和替换。
答案 2 :(得分:0)
只要你完全覆盖单元测试(你不是吗?)它应该不是问题,如果它: - )?
避免使用字符串作为属性名称的另一个原因是使用例如重构Resharper无法修复这些引用。这就是Fluent NHibernate真正闪耀的地方。