質問

私はNHibernateはといくつかの奇妙な行動を経験しています。私は、リポジトリから学習者のリストを取得し、必要に応じてそれらを更新しています、私は最初のものを保存するときに、奇妙なことは、すべての学習者に加えられた変更は、データベースにコミットされています。

        [Transaction]
        public void UpdateLearner(Learner learner)
        {
            //UnitOfWork.CurrentSession.Save(learner);
        }

任意のアイデアなぜですか?私は、キャッシュが有効に持っていけません。変更がさえコメントアウト保存方法への呼び出しで持続し得るように私は、取引を行うにはその何かを知っています。

これは私のマッピングです。

<class name="Learner"  table="ILR_Learner">
    <id name="Id" column="ILRLearnerID">
      <generator class="native" />
    </id>
    <property column="LastWarning" name="LastWarning" type="DateTime" />
    <property column="Submitted" name="SuccessfulSubmission" type="DateTime" />

    <join table="vwLearnerLSCUpload">
      <key column="ILRLearnerID" foreign-key="ILRLearnerID"/>
      <property column="Dog" type="DateTime" name="Dog"/>
    </join>

    <join table="Learner">
      <key column="Id" foreign-key="ILRLearnerID"/>
      <property column="Food" name="Food" type="String" length="20" />
    </join>

  </class>
役に立ちましたか?

解決

エンティティを更新するときに

、変更が自動的に追跡されています。トランザクションがコミットされたときに、すべての変更されたエンティティが保持されます。コールする必要はありません。

Session.Save(entity);

この質問を参照してください。ます。

エンティティごと無効に変更追跡するには、セッションからエンティティを立ち退かする必要があります:

Session.Evict(entity);

すべての変更を永続化するには、あなたがして呼び出します。

Session.Update(entity);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top