كيف يحدد nhibernate ما إذا كان سيتم إدراج أو تحديث سجل؟

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

  •  01-10-2019
  •  | 
  •  

سؤال

عند استخدام Session.SaveOrUpdate(myEntity); كيف يقرر Nhibernate كيف يمكن إدراج سجل جديد أو تحديث سجل موجود؟

أواجه مشكلة أثناء حفظ كائن واحد في مشروع S#ARP. يتم استرداده من التخزين ، ثم تخزينه في حالة الجلسة لبضع طلبات الويب ، ثم يتم حفظها مرة أخرى إلى قاعدة البيانات مع تغيير خاصية واحدة (وليس S#arp [DomainSignature]).

لدي ، في وقت التشغيل ، قارنت الكائن الذي على وشك أن يتم استمراره بإصدار تم استرداده حديثًا مباشرة من قاعدة البيانات باستخدام Equals() الطريقة وهذا يعود صحيح. ومع ذلك ، لا يزال الكائن ينتهي إنشاء صف جديد في قاعدة البيانات.

في مكان آخر من التطبيق ، يعمل هذا بشكل جيد ولكني آمل أن يكون مؤشرًا على كيفية عمل NHIB لهذا.

هل كانت مفيدة؟

المحلول

أساسًا SaveOrUpdate() يبحث عن معرف. إذا كان المعرف موجودًا ، فسيقوم بتحديث السجل في قاعدة البيانات. إذا لم يكن المعرف موجودًا ، فسيقوم بإنشاء سجل جديد.

ومع ذلك ، يبدو أنك قد يكون لديك شيء غير تقليدي يحدث في جلستك. قد ترغب في المحاولة SaveOrUpdateCopy() لمعرفة ما إذا كان هذا يحل مشكلتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top