我正在维护一个使用NHibernate 3.3.3.4001
的旧应用程序我有一个名为ProcedureField的类,它有一个名为ReportCode的属性,其映射如下所示:
Map(x => x.ReportCode);
数据库列名称相同,为nullable NVARCHAR(50)
由于原因未知,当我使用PK从表中检索行时,当数据库具有值时,该属性为null。示例:
session.Get<ProcedureField>(id);
或
session.Query<ProcedureField>().First(pf => pf.Id == id);
考虑所有其他财产。
这是超级奇怪的部分。我使用SQL Server Profiler嗅探查询,执行DOES的实际动态SQL返回ReportCode
字符串。它只是没有填充财产。
对于最后一点奇怪,如果我添加一个名为ReportCodey
的新属性并将其映射到ReportCode,它可以工作(但我必须保留现有属性)!
Map(x => x.ReportCode);
Map(x => x.ReportCodey).Column("ReportCode");
升级到NHibernate的最新版本(或任何版本)对我来说不是一个选项,因为它会打破这个应用程序使用的自定义框架中的大量内容(该死的自定义框架!)。
有人遇到过这种性质的怪异吗?
答案 0 :(得分:0)
不确定这是否是一个合适的答案,但它解决了我的问题。
我创建了一个名为ReportCode
的表。看起来这就是造成这个问题的原因。奇怪的是,NHibernate变得奇怪,因为新表与另一个表中的现有列具有相同的名称。
我删除了新的ReportCode
表,然后又重新开始工作了。