سؤال

في مشروع أعمل عليه، أحتاج إلى حذف "مستخدم" من قاعدة البيانات الخاصة بي.يحتوي هذا "المستخدم" على جدولين يشيران إلى المفتاح الخارجي.عند حذف الثابت، أحاول حذف جميع السجلات من الجدول A والجدول B يحتوي على مفاتيح أجنبية إلى "المستخدم" ثم حذف سجل "المستخدم".يتم كل ذلك ضمن مستودعات واستخدام مصنع الكائنات.

الرمز كما يلي:

giveacodicetagpre.

إذا كان لكل جدول سجل واحد، فإنه يعمل بشكل جيد.إذا كان هناك جدول متعدد، ما يمكن أن يحدث إلا على Usertoken and usermAppings، أحصل على الخطأ التالي.

giveacodicetagpre.

اضطررت إلى وضع xxxx لأسباب الخصوصية.ما قرأته هذا كما هو الحال لأن LinQ يخزن بإعداد التغييرات الخاصة ب SQL، فهذا يضعه في قاموس، وبشكل ما هو مفتاح شيئين هو نفسه وأخطاء "قبل حدوث تغيير.

أي مساعدة سيكون موضع تقدير كبير.

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

المحلول 2

هذا سؤال قديم ولكن لم نتمكن أبدا من إجراء هذا الحذف لكلا الجداول في وقت واحد.كان حلنا هو حذف من واحد ثم الآخر والالتزام بالتغييرات بينهما.

نصائح أخرى

أنا اطلاق النار كيندا في الظلام هنا والافتراض كيف تقرأ أنه صحيح مع ألم قليل لدي على طول الطريق.

قم بالطاولات التي تحذفها من المفتاح الأساسي الخاص بها أو هل تستخدم المفتاح الأجنبي مثل PK؟ (حسنا، أنت تعرف ماذا أقصد ... لا يبدو أن لديهم مفتاح أساسي فريد من نوعه المستقل الذي يدرك LINQ) '

يستخدم LINQ طريقة Gethash لإنشاء معرف فريد من الحقول الرئيسية الأساسية .. أنا أظن أن هذه الحقول مكررة وبالتالي مشكلة القاموس ... المشكلة لا تحدث عن 2 طاولات مختلفة لها نفس معرف المفتاح نفسه.

أنا أظن أن هذه الجداول مع عناصر متعددة في هي نوع من في منتصف الكثير من الانضمام إلى الكثيرين. سيكون الإصلاح السريع والقذرة لإضافة عمود زيادة تلقائية إليهم وخصص هذا المفتاح الأساسي (وإلا فإنه حاول استخدام PK متعدد الحقل - الذي لم أحاول حقا مع LinQ Deliberatley).

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

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