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

dra*_*fly 4 nhibernate nhibernate-mapping

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

    protected DateTime insertDate;
Run Code Online (Sandbox Code Playgroud)

这是这个fiels的映射:

    <property name="InsertDate" access="field.camelcase" update="false" />
Run Code Online (Sandbox Code Playgroud)

使用ctor时设置此字段

    public DocuBase(DateTime insertDate)
Run Code Online (Sandbox Code Playgroud)

并且仅在将行添加到数据库时保留.我根本不需要属性,没有setter和没有getter.我在NHibernate 3工作.

现在,我已经从NHiberbate 3迁移到NHibernate 3.3.1,并且在创建会话工厂时遇到此异常:

在"XXXX"类中找不到与"insertDate"字段关联的属性"InsertDate"

为什么会发生?如何更改映射以摆脱异常?

编辑:下面的答案是完全正确的.但对于那些不需要/不想拥有属性而且只有字段的人,还有另一种解决方案:

  • 将name属性设置为字段名称(在我的例子中是insertDate)并记住具有正确的列名

    <property name="insertDate" column="InsertDate" access="field.camelcase" update="false" />
    
    Run Code Online (Sandbox Code Playgroud)

dov*_*ove 5

这是案件敏感,这会工作.

<property name="insertDate" column="InsertDate" update="false" />
Run Code Online (Sandbox Code Playgroud)

在3.1.0版中看起来有一个突破性的变化

NH今天接受以下代码.如果这会抛出会更好 - 当使用公共接口的属性名称(或memberinfo)来配置NH(或第三方工具)以外的其他方式而不是hbm时会导致问题.

[hbm]
<property name="Name" access="field.camelcase" />

[code]
string name;
public virtual string SomeThingCompletelyDifferent{
                                  get {return name;}
                                  set{name=value;}
}
Run Code Online (Sandbox Code Playgroud)

注意:这将是一个重大变化.

ps - 更新了回复以删除对私有集使用Property的引用,因为这不是正在寻找的内容,并且上面的更改更具相关性.