gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:18:09 25 4
gpt4 key购买 nike

我有一个领域的类:

    protected DateTime insertDate;

这是此字段的映射:
    <property name="InsertDate" access="field.camelcase" update="false" />

使用 ctor 时设置此字段
    public DocuBase(DateTime insertDate)

并且仅在将行添加到数据库时才会持久化。 我根本不需要它的属性(property),没有 setter 也没有 getter。 我在 NHibernate 3 工作过。

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

Could not find the property 'InsertDate', associated to the field 'insertDate', in class 'XXXX'



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

编辑:下面的答案是完全正确的。但是对于那些不需要/不想拥有属性并且只有字段的人来说,还有另一种解决方案:
  • 将 name 属性设置为字段名称(在我的情况下是 insertDate )并记住具有正确的列名
    <property name="insertDate" column="InsertDate" access="field.camelcase" update="false" />
  • 最佳答案

    案例 灵敏度,这将起作用。

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

    看起来在 3.1.0 版中,有一个 breaking change

    NH 今天接受以下代码。如果这会抛出会更好 - 当使用公共(public)接口(interface)的属性名称(或成员信息)配置 NH(或 3rd 方工具)时,它会导致问题,而不是通过 hbm。
    [hbm]
    <property name="Name" access="field.camelcase" />

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

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

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

    关于nhibernate - 找不到属性 - 从 NHibernate 3 切换到 3.3.1 后出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13192103/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com