سؤال

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

الطريق الذي اخترته حتى الآن هو:

  • أنا تعطيل المؤجلة التحميل
  • لقد خلق [serializable] فئة جزئية من أجل بلدي الكائن الجذر
  • لقد وضع الشيء في الدورة و استرجاعها في الحدث onload

يبدو أن هذا العمل من حيث المبدأ.ومع ذلك ، عند محاولة تحديث بعض الأطفال خصائص بعد استرداد كائن من الدورة

p.PhysicianSpecialties[0].physician_specialty_code = 
    ddlSpecialty.SelectedItem.Value;

يمكنني الحصول على هذا الخطأ:

Operation is not valid due to the current state of the object.

الخطأ سببه هذا الأسلوب في الدعوة ولدت Linq اضع الطريقة:

this.SendPropertyChanging();

خصائص أخرى الحصول على تحديث على ما يرام:

p.PhysicianNames[0].first_name = txtFirstName.Text.ToUpper();

هذا لا يسبب خطأ.

أسئلتي:أنا في الأساس على الطريق الخطأ ؟ هل هناك طريقة أفضل للقيام بذلك ؟ ما هي أسباب الخطأ ؟

تحديث:والاستثناء الوحيد هو النظام.البيانات.Linq.ForeignKeyReferenceAlreadyHasValueexception'.أعتقد أنا على شيء, ولكن أنا لا أعرف الحل حتى الآن.

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

المحلول

حصلت الحل من MSDN.المسألة و هو شرح أفضل في هذا الموضوع مما يمكن أن تفعل ذلك ، أن لا أحد يستطيع أن يغير جمعية جانب واحد ، ولكن يجب أن تفعل ذلك على طرفي طريق تعيين جديد الطفل كائن ليس فقط من خلال تغيير معرف:

p.PhysicianSpecialties[0].PhysicianSpecialtyLookup = db.PhysicianSpecialtyLookups.واحد(c => (ج.physician_specialty_code == ddlSpecialty.SelectedItem.قيمة));

نصائح أخرى

وكيف يمكن القيام بذلك في حالة استخدام ربط البيانات؟لدي قائمة منسدلة في عرض شبكة البيانات بدأت في ظهور هذا الخطأ عندما أقوم بتغيير القيمة المنسدلة.هذا يجعلني أعتقد أنه يتعين علي إما حذف الارتباط أو عدم استخدام ربط البيانات.

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