使用NHibernate的限制而不在属性名的字符串
-
26-09-2019 - |
题
当你创建一个标准,您可以添加应用到属性限制。有创建限制的2种方式:
Restrictions.Eq(string propertyName, object value)
点击或点击
Restrictions.Eq(IProjection projection, object value)
事情是,我觉得不舒服的传球属性名称为字符串,因为如果他们改变,我的项目将正常编译就可以和任何可能的命名不匹配将仅在单元测试过程中找到。我试图实现TDD,但它不会很快发生,所以我试图单元测试的极限依赖检查错误(直到我们设法拥抱TDD)。
任何想法? 由于事先!
解决方案
使用LINQ, QueryOver (NH3.x)或 NH LAMBDA扩展(NH2.x)或 NHibernate的表达扩展(NH1.2 )
的这些所有更强类型比只用字符串。
其他提示
我能感觉到你的疼痛。
但没有办法把动态参考使用的标准API的预测,就像你不能让NHibernate的映射检测表或列名称的改变你的属性。
做一个查找和使用在大多数情况下工作,更换逐步与“属性”。
只要你有单元测试完全覆盖(对你不好吗?)它不应该是一个问题,应该是: - ?)
另一个原因,以避免使用字符串的属性名称是重构使用例如ReSharper的不能修复那些引用。这是功能NHibernate真正的亮点。
不隶属于 StackOverflow