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)这是案件敏感,这会工作.
<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的引用,因为这不是正在寻找的内容,并且上面的更改更具相关性.
| 归档时间: |
|
| 查看次数: |
1497 次 |
| 最近记录: |