在属性名称中使用不带字符串的NHibernate限制

在属性名称中使用不带字符串的NHibernate限制,nhibernate,nhibernate-mapping,nhibernate-criteria,Nhibernate,Nhibernate Mapping,Nhibernate Criteria,创建条件时,可以添加应用于特性的限制。有两种创建限制的方法: 限制。Eqstring属性名称,对象值 或 限制。EQI投影,对象值 问题是,我不喜欢将属性名作为字符串传递,因为如果它们发生变化,我的项目将像往常一样编译,任何可能的命名不匹配都只会在单元测试期间发现。我试图实现TDD,但它不会很快实现,所以我试图限制单元测试的依赖性,以检查错误,直到我们成功地接受TDD为止 有什么想法吗? 提前谢谢 使用LINQ、NH3.x或NH2.x或NH1.2 所有这些都比仅仅使用字符串强类型。使用LINQ、

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

限制。Eqstring属性名称,对象值 或 限制。EQI投影,对象值

问题是,我不喜欢将属性名作为字符串传递,因为如果它们发生变化,我的项目将像往常一样编译,任何可能的命名不匹配都只会在单元测试期间发现。我试图实现TDD,但它不会很快实现,所以我试图限制单元测试的依赖性,以检查错误,直到我们成功地接受TDD为止

有什么想法吗? 提前谢谢

使用LINQ、NH3.x或NH2.x或NH1.2

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

使用LINQ、NH3.x或NH2.x或NH1.2

所有这些都比仅仅使用字符串强。我能感觉到你的痛苦

但使用CriteriaAPI中的投影无法对属性进行动态引用,就像无法使nHibernate映射检测到表名或列名更改一样

在大多数情况下,使用工作属性一步一步地查找和替换。

我能感觉到你的痛苦

但使用CriteriaAPI中的投影无法对属性进行动态引用,就像无法使nHibernate映射检测到表名或列名更改一样


在大多数情况下,使用属性一步一步地查找并替换。只要您有完整的单元测试覆盖范围,您不这样做吗?这不应该是个问题,是吗:-


避免使用字符串作为属性名的另一个原因是,使用Resharper等进行重构无法修复这些引用。这就是Fluent NHibernate真正闪耀的地方。

只要你有完整的单元测试覆盖范围,你不觉得吗?这不应该是个问题,是吗:-


避免使用字符串作为属性名的另一个原因是,使用Resharper等进行重构无法修复这些引用。这就是Fluent NHibernate真正的亮点。

Fluent NHibernate仅用于映射。OP询问当查询Fluent NHibernate仅用于映射时如何避免字符串。OP询问询问时如何避免字符串谢谢!这些都很有趣。我等不及要看NH3.0稳定了。谢谢!这些都很有趣。我迫不及待地想看到NH3.0稳定。是的,我也想到了,但很遗憾我不能真正依靠我的队友,如果你知道我的意思…是的,我也想到了,但很遗憾我不能真正依靠我的队友,如果你知道我的意思。。。