فردي حفظ السلوك مع مستودعات Nhibernate ووحيد القرن
-
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);
لا تنتمي إلى StackOverflow