سؤال

هل هناك أي سبب لعدم نجاح شيء مثل هذا؟

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

 DataClasses1DataContext db = new DataClasses1DataContext();
 User updateUser = db.Users.Single(e => e.user == user);
 updateUser.InUse = !updateUser.InUse;
 db.Log = new System.IO.StreamWriter(@"c:\temp\linq.log") { AutoFlush = true };
 db.SubmitChanges();

(updateUser.InUse هو حقل بت)

لسبب ما لا يعمل.عندما أتحقق من linq.log فهو فارغ تمامًا.

هل يمكن أن تكون هناك مشكلة في ملف .dbml الخاص بي؟يبدو أن الجداول الأخرى تعمل بشكل جيد ولكنني قمت بمقارنة الخصائص الموجودة في ملف dbml. وكانت جميعها متطابقة.

وكأن الأمر db.SubmitChanges();لا يكتشف أي تحديثات مطلوبة.

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

المحلول

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

نصائح أخرى

هل الممتلكات InUse "طبيعية" واحد بقدر ما تشعر بالقلق LINQ؟ (على سبيل المثال انها ليست تم تكوينها أو أي شيء غير تقليدي من هذا القبيل؟)

وبدلا من ذلك، أنا لا أفترض انها قيم الفارغة <منطقي> هو عليه، مع القيمة الحالية لاغية؟ إذا كان الأمر كذلك، خط التحديث لا تفعل اي شيء في الواقع -!. لالقيم المنطقية قيم الفارغة، لاغية = فارغة

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