NHibernate 为映射 属性 返回空值

NHibernate Returning a Null Value for a Mapped Property

我正在维护一个使用 NHibernate 3.3.3.4001 的旧应用程序

我有一个名为 ProcedureField 的 Class,它有一个名为 ReportCode 的 属性,其映射如下所示: Map(x => x.ReportCode);

数据库列同名并且是nullable NVARCHAR(50)

由于未知原因,当我使用 PK 从 table 检索一行时,当数据库有值时,属性 为空。示例:

session.Get<ProcedureField>(id);

session.Query<ProcedureField>().First(pf => pf.Id == id);  

所有其他属性都已考虑在内。

这是超级奇怪的部分。我使用 SQL Server Profiler 和执行 DOES return ReportCode 字符串的实际动态 SQL 嗅探查询。它只是没有填充 属性.

最后一点奇怪的是,如果我添加一个名为 ReportCodey 的新 属性 并将其映射到 ReportCode,它就可以工作(但我必须保留现有的 属性 )!

Map(x => x.ReportCode);
Map(x => x.ReportCodey).Column("ReportCode");

升级到 NHibernate 的最新版本(或任何版本)对我来说不是一个选择,因为它会破坏此应用程序使用的自定义框架中的大量内容(该死的自定义框架!)。

有人遇到过这种性质的怪事吗?

不太确定这是否是一个充分的答案,但它解决了我的问题。

我创建了一个 table,它也被称为 ReportCode。看起来这是导致问题的原因。奇怪的是 NHibernate 变得很奇怪,因为新的 table 与另一个 table.

中的现有列同名

我放弃了新的 ReportCode table,它又恢复工作了。