يمكن ينق التحديث والاستعلام بالذرة؟
سؤال
وأنا بحاجة للحصول على 1000 الصفوف من قاعدة بيانات، وفي الوقت نفسه علامة لهم باسم 'في عملية'. بهذه الطريقة، موضوع آخر لا يمكن اتخاذ نفس 1000 الصفوف ومعالجة لهم كذلك.
ومع LINQ أفعل شيئا من هذا القبيل:
ورسائل و= (من م في database.messages حيث (m.status == MESSAGESTATUSINIT) تحديد م) .Take (1000) .ToList ()؛
ومثالي وأود أن في نفس الوقت تعيين الحالة إلى MESSAGESTATUSPROCESSING. بالطبع يجب أن يكون هذا الذرية.
وأي أفكار؟ أم أنه يعود إلى SQL؟
وذلك بفضل!
المحلول
وأنت لا تستطيع أن تفعل ذلك في مصمم الرسم Linq2SQL. استخدام الإجراء المخزن، وتكوينه على مصمم لإخراج رسالة. وبهذه الطريقة يمكنك التعامل مع الكيانات تحميل وارتكاب التغييرات بشكل طبيعي.
والتحقق من ذلك عن كيفية القيام بذلك (رسم الخرائط على وجه التحديد نوع الإرجاع من طرق SPROC إلى فئات نموذج البيانات): <وأ href = "http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx" يختلط = " noreferrer نوفولو "> http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx
نصائح أخرى
وينق نفسها لن توفر هذه القدرة. نضع في اعتبارنا ينق == استعلامات. تحديث البيانات يحدث في أماكن أخرى.
هل يمكن أن يكون أفضل حالا في هذه الحالة كتابة إجراء مخزن لإرجاع النتائج. وsproc يمكن تحديث الجدول وإرجاع النتائج بالذرة، وتطبيق الخاص بك، ثم سوف يكون مكالمة واحدة.
ويمكنك تحيط رمز القفل مع {}.