我正在维护一个使用Nhibernate 3.3.3.4001
的旧应用我有一个名为ProceceureField的类,该类别具有称为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和执行的实际动态SQL嗅到查询,确实返回ReportCode
字符串。它只是不填充属性。
以及在最后一点怪异的情况下,如果我添加一个名为 ReportCodey
的新属性并将其映射到reportcode,则可以(但我必须离开现有属性(!
Map(x => x.ReportCode);
Map(x => x.ReportCodey).Column("ReportCode");
升级到Nhibernate的最新版本(或任何(对我来说不是一个选项,因为它会破坏本应用程序使用的自定义框架(该死的自定义框架!(。
有人遇到这种性质的怪异吗?
不确定这是否是一个足够的答案,但它解决了我的问题。
我创建了一个名为ReportCode
的表。看来这引起了问题。奇怪的是,nhibrenate变得很奇怪,因为一张新表格与另一表中的现有列具有相同的名称。
我放下了新的ReportCode
表,然后又回到了工作。