ما الذي أفتقده؟(يوجد كيان بنفس الهوية بالفعل في EntitySet هذه.)

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

سؤال

أنا أستخدم DTOs والمحولات في سيناريو إطار عمل الكيان.أريد تحديث كيان.ولذلك أضع هذا البيان:databasecontext.Tablename(s).Attach(entityobj);عندما يصل إلى هنا ينتهي البرنامج بهذا الخطأ:An entity with the same identity already exists in this EntitySet.

شعرت أنني أستطيع التغلب على هذا بالقول databasecontext.Tablename(s).Detach(entityobj);قبل أن أتصل بإرفاق مرة أخرى.ولكن البرنامج ما زال يفشل في عبارة Attach.

ماذا ينقصني؟ما هي الطريقة في سياق قاعدة البيانات التي تستدعي التحديث في خدمة المجال؟

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

المحلول

يبدو أنك تبقي السياق مفتوحًا أثناء إجراء التغييرات.

في هذه الحالة ، لا تحتاج إلى إعادة توحيد الكائن إلى السياق.

إذا فتحت سياقًا ، فاحصل على كائن من سياق ، ثم أغلق السياق ، وقم بإجراء بعض التغييرات على الكائن ، ثم افتح سياقًا جديدًا. في هذه الحالة ، تحتاج إلى إرفاق الكائن بالسياق.

نصائح أخرى

السؤال غير واضح.لم تذكر المدة التي يعيشها سياق قاعدة البيانات الخاصة بك ومتى قمت بتحميل الكيان في السياق.

ولكن بناءً على سؤالك، أعتقد أنك قمت بتحميل الكيان وتمريره في مكان ما كـ DTO وعندما يتم إرجاع DTO فإنك لا تزال تستخدم نفس السياق.تقوم بتحويل DTO إلى كيان وتحاول إرفاقه مرة أخرى => استثناء BANG.لا يمكن وضع نفس الكيان مرتين في السياق.حاول استخدام ObjectContext.ApplyCurrentValues ​​بدلاً من ذلك (EF 4.0) أو ApplyPropertyChanges (EF 1.0).

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