4

我有一个领域的类:

    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,并且在创建会话工厂时出现此异常:

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

为什么会发生以及如何更改映射以消除异常?

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

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

    <property name="insertDate" column="InsertDate" access="field.camelcase" update="false" />
    
4

1 回答 1

5

这是区分大小写的,这将起作用。

<property name="insertDate" column="InsertDate" update="false" />

看起来在 3.1.0 版中,发生了重大变化

NH 今天接受以下代码。如果这会抛出会更好 - 当使用公共接口的属性名称(或成员信息)以其他方式配置 NH(或 3rd 方工具)时,它会导致问题,而不是通过 hbm。

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

[code]
string name;
public virtual string SomeThingCompletelyDifferent{
                                  get {return name;}
                                  set{name=value;}
}

注意:这将是一个重大更改。

ps - 更新答案以删除对使用私有集的属性的引用,因为这不是正在寻找的内容,并且上述重大更改更相关。

于 2012-11-02T09:19:27.653 回答