【发布时间】:2009-01-04 22:41:26
【问题描述】:
我刚刚被这个问题困扰了一个小时,最终我很烦人地发现了这个问题。
情况
我有一个表,它使用一个字符串作为主键,这个表有各种多对一和多对多关系,都在这个主键之外。
从表中搜索多个项目时,所有关系都被带回。但是,每当我尝试通过主键(字符串)获取对象时,它并没有带回任何关系,它们总是设置为 0。
部分解决方案
所以我查看了我的日志以查看 SQL 正在做什么以及返回正确的结果。所以我以各种随机的方式尝试了各种事情,最终得出了结论。传递给 get 方法的字符串的情况与数据库中的情况并不完全相同,因此当它尝试将关系项与主实体匹配时,它什么也没找到(或者至少是 NHIbernate不是因为正如我上面所说的 SQL 实际上返回了正确的结果)
真正的解决方案
还有其他人遇到过这个吗?如果是这样,您如何告诉 NHibernate 在将 SQL 结果与实体匹配时忽略大小写?这很愚蠢,因为它以前工作得很好,现在突然开始注意字符串的大小写了。
【问题讨论】:
-
你能发布你的映射文件吗?
-
新添加的项目的大小写是否正确?你最近更新了 NHibernate 吗? SQL 通常是区分大小写的,但是使用“LIKE”语句它们都可以取决于方言,但是在解析关系时你不想使用它。
标签: .net nhibernate nhibernate-mapping