NHibernate代理ID值

时间:2014-01-30 11:31:08

标签: nhibernate

看到一个场景,在通过id加载实体时,NH通过代理加载(这是预期的),但是,id = 0的后备字段,但虚拟属性(getter),是来自db的实体的id

示例:

private int _id;
public virtual int Id { get { return _id; } }

和映射

...
<id name="Id" access="nosetter.camelcase-underscore">
...

加载实体后,_id = 0,但Id = 4,例如。

在代理实体时,后备字段是否正常行为是否未初始化?

1 个答案:

答案 0 :(得分:2)

我会说:别担心。没有任何错误。它是正常行为

您可以尝试创建另一个属性,例如

public virtual int MyTestId 
{ 
   get { return _id + 1; }
}

你会看到MyTestId是5 (继续上面的案例研究,当Id == 4时)。简单地说,你很可能面对VS调试器......这只是一个人类。