NHibernate没有保存对象更新

时间:2013-02-04 13:44:49

标签: nhibernate generics sql-update

我遇到了问题,只是在某些课程中,大部分课程都在工作,而我却找不到其他课程的原因。 A可以创建新对象并保存没有任何问题,但在这种特殊情况下我无法保存更改

我有一个父抽象类:

[DataContract]
public abstract class BaseClass<T> where T : Object
{
    public BaseClass(){}

    [DataMember]
    public virtual int Id{ get; set; }

    [DataMember]
    public virtual string Code { get; set; }
}

我的班级,有问题:

public class NewClass: BaseClass<OtherClass>
{
    public NewClass(){}
}

如果我创建一个NewClass对象并保存它可以正常工作:

var newClass = new NewClass{Code="1"};
Session.SaveOrUpdate(newClass);

现在,如果我更改了Code属性值并保存,则不会在数据库中执行更新。

var newClass = Session.Load<NewClass>(id);
newClass.Code = '01';
Session.SaveOrUpdate(newClass);

编辑:如果我提交了一个事务并提交了更改,它仍然无效。

1 个答案:

答案 0 :(得分:1)

这是正常行为。必要时,NH会刷新更新。最后一个片段中完全没有SaveOrUpdate。只需要将新的或分离的对象放入会话中。在对象进入会话后,NH决定何时将其存储到数据库中。这应该对您的代码都是透明的。

NH Flushes:

  • 提交时
  • 致电session.Flush()
  • 在查询之前(对实际数据执行查询)