我有一个带有字段的类:
protected DateTime insertDate;
这是该字段的映射:
<property name="InsertDate" access="field.camelcase" update="false" />
该字段在使用ctor时设置
public DocuBase(DateTime insertDate)
并且仅当行添加到数据库时才被持久化。我根本不需要属性,没有 setter 和 getter。我在 NHibernate 3 中工作。
现在,我已经从 NHiberbate 3 迁移到 NHibernate 3.3.1,并且在创建会话工厂时出现此异常:
找不到与该字段关联的属性“InsertDate”
'insertDate',在类 'XXXX' 中
为什么会发生这种情况以及如何更改映射以消除异常?
EDIT:下面的答案是完全正确的。但对于那些不需要/不想拥有财产而只想拥有字段的人来说,还有另一种解决方案:
It is case敏感度,这会起作用。
<property name="insertDate" column="InsertDate" update="false" />
看起来在 3.1.0 版本中,有一个重大改变 https://nhibernate.jira.com/browse/NH-2556
NH 今天接受以下代码。如果这会抛出问题,那就更好了 - 当使用公共接口的属性名称(或memberinfo)以除 hbm 之外的其他方式配置 NH(或第 3 方工具)时,它会导致问题。
[hbm]
<property name="Name" access="field.camelcase" />
[code]
string name;
public virtual string SomeThingCompletelyDifferent{
get {return name;}
set{name=value;}
}
注意:这将是一个重大更改。
ps - 更新了答案以删除对使用具有私有集的属性的引用,因为这不是正在寻找的内容,并且上述重大更改更相关。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)