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 に答える