我有一个带有字段的课程:
protected DateTime insertDate;
这是这个fiels的映射:
<property name="InsertDate" access="field.camelcase" update="false" />
使用ctor
时设置此字段 public DocuBase(DateTime insertDate)
并仅在将行添加到数据库时保留。 我根本不需要财产,没有任何选手和没有吸气剂。我在NHibernate 3工作。
现在,我已经从NHiberbate 3迁移到了NHibernate 3.3.1,并且在创建会话工厂时遇到了这个异常:
无法找到与该字段关联的属性“InsertDate” “insertDate”,在“XXXX”类中
为什么会发生&amp;如何更改映射以摆脱异常?
编辑:以下答案完全正确。但对于那些不需要/不想拥有属性而且只有字段的人,还有另一个解决方案:
将name属性设置为字段名称(在我的情况下,它是 insertDate )并记住具有正确的列名
<property name="insertDate" column="InsertDate" access="field.camelcase" update="false" />
答案 0 :(得分:5)
案例敏感度,这将起作用。
<property name="insertDate" column="InsertDate" update="false" />
在3.1.0版本中,有一个breaking change
NH今天接受以下代码。如果这会抛出会更好 - 当使用公共接口的属性名称(或memberinfo)来配置NH(或第三方工具)以外的方式而不是hbm时会导致问题。
[hbm]
<property name="Name" access="field.camelcase" />
[code]
string name;
public virtual string SomeThingCompletelyDifferent{
get {return name;}
set{name=value;}
}
注意:这将是一次重大改变。
ps - 更新了回复以删除对私有集使用Property的引用,因为这不是正在寻找的内容,而且上面的更改更具相关性。