فردي حفظ السلوك مع مستودعات Nhibernate ووحيد القرن

StackOverflow https://stackoverflow.com/questions/1393141

  •  21-09-2019
  •  | 
  •  

سؤال

أنا أعاني من بعض السلوك الغريب مع 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