NHibernate返回映射属性的空值

时间:2018-02-09 06:53:46

标签: nhibernate fluent-nhibernate nhibernate-mapping

我正在维护一个使用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的最新版本(或任何版本)对我来说不是一个选项,因为它会打破这个应用程序使用的自定义框架中的大量内容(该死的自定义框架!)。

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

1 个答案:

答案 0 :(得分:0)

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

我创建了一个名为ReportCode的表。看起来这就是造成这个问题的原因。奇怪的是,NHibernate变得奇怪,因为新表与另一个表中的现有列具有相同的名称。

我删除了新的ReportCode表,然后又重新开始工作了。