Fluent NHiberate的KeyUpdate方法的目的是什么?

时间:2010-08-31 20:27:35

标签: nhibernate fluent-nhibernate

我有一个集合映射为Ayende's example之后的仅查询属性。我的映射是:

HasMany<Employee>(Reveal.Member<Company>("_employees")).Access.None();

这工作正常,除非我加载公司外键Employee.CompanyId更新为null。即使我没有更新公司并且生成的SQL仅在更新列表中包含CompanyId,即使我没有映射Employee来仅更新已更改的属性,也会发生这种情况。

我尝试使用NoOp(我认为他们是我的同义词)并将员工集合声明为公共财产而非私有字段。我终于能够通过将映射更改为:

来修复它

的hasMany(Reveal.Member( “_雇员”))Access.None()Not.KeyUpdate();

KeyUpdate的目的是什么?等效的XML映射是什么?为什么仅查询属性需要它?我的假设是,设置对none或noop的访问可以防止任何更改。

1 个答案:

答案 0 :(得分:1)

杰米

如果您仍然感兴趣,可以从AutoPersistenceModel生成hbms并查看xml。就像

一样
model.CompileMappings(); 
model.WriteMappingsTo(outputDir);

顺便说一下,你有没看过@ ConfOrm。我怀疑这会在开发时获得更多的牵引力,但还没有花太多时间用它。

HTH,
Berryl