0

我遇到了问题,只是在某些课程中,大部分时间都在工作,而我不知道为什么其他人没有。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);

编辑:如果我进行交易并提交更改,它仍然不起作用。

4

1 回答 1

1

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

NH冲洗:

  • 提交时
  • 打电话时session.Flush()
  • 查询前(对实际数据执行查询)
于 2013-02-04T14:38:47.750 回答