NHibernate为所有列生成更新语句

时间:2010-12-16 20:05:56

标签: nhibernate fluent-nhibernate

NHibernate是否总是为所有列生成更新?

public class Person
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual string Address { get; set; }
}

Person p = Session.Load(1);
p.Name = "New Name";

Session.Flush();//Update for all columns, but I change only Name

NHibernate或我的错误是正常的行为吗?我使用Fluent NHibernate和AutoMapping。

2 个答案:

答案 0 :(得分:10)

这是默认行为,但只有将dynamic-update="true"添加到<class>映射中,才能使NH更新修改后的列。

答案 1 :(得分:-2)

NHibernate总是更新所有映射列。如果其他列没有更改,这应该没有问题,因为在更新时数据先前已从基础数据存储区中提取,因此基本上,它只将列值重置为它们自己的原始值。没问题。

如果您想覆盖此行为,则需要实施 IInterceptor 界面。