从NHibernate 3切换到3.3.1后找不到属性 - 异常

时间:2012-11-02 08:56:51

标签: nhibernate nhibernate-mapping

我有一个带有字段的课程:

    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" />
    

1 个答案:

答案 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的引用,因为这不是正在寻找的内容,而且上面的更改更具相关性。