LINQ إلى SQL CompiledQuery.Compile () مع تحديث، حذف، أدخل؟

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

  •  21-08-2019
  •  | 
  •  

سؤال

جميع،

وهكذا أنا عندي كل ما عندي من اختيار الاستعلامات في LINQ إلى SQL تحويلها إلى استخدام CompiledQueries لتسريع الامور. يعمل كبيرة حتى الآن لبيانات محددة، ولكن لم أكن قادرا على معرفة كيفية قبل تجميع إدراج أو تحديث أو حذف البيانات.

ومنحت، عندما كنت إدراج أو حذف أو تحديث في وLINQ إلى SQL، لديك لاستخدام نموذج الكائن. ولكن من الواضح في مكان ما على طول الطريق التي يولدها استعلام، الذي من شأنه أن يكون لطيفا إلى ما قبل تجميع وتخزين في عضو ثابت.

هل هذا ممكن؟ ما هو الأداء LINQ مثل وجود تحديثات، حذف وإدراج عندما وليس قبل جمعها؟ كنت أرى كونها أسرع كثيرا من يختار، لأن ما يفعلونه تحت أبسط كثيرا، وأقل "دينامية" ...

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

المحلول

وهناك فرق كبير. ينق إلى SQL مختارة الاستفسارات يمكن أن يكون كبيرة أشجار التعبيرات المعقدة. في هذه قد يستغرق بعض الوقت "تجميع". في هذه الحالة ائتلافه لبعض T-SQL التي يمكن تشغيلها ضد SQL خادم. لذلك فمن المنطقي لذاكرة التخزين المؤقت نتيجة لعملية بحيث يمكن إعادة استخدامها.

ولكن البعض حذف، تحديث، وإدراج هي العمليات البسيطة التي لا تتطلب شجرة التعبير يمكن تحويلها إلى T-SQL (LINQ نفسه هو كل شيء عن الاستعلام). في المؤسف مجرد أننا قد تم تدريبهم على التفكير من التعليمات البرمجية SQL التي تنفذ هذه العمليات الأخرى 'الاستفسارات، ونحن لسنا actuall طلب أي معلومات.

ويتم تعريف هذه العمليات إلا من خلال DataContext ليس عن طريق LINQ بالتالي رمز لأداء المترجمة بالفعل هذه الوظائف.

نصائح أخرى

وأفكر في ثلاثة فقط إدراج المنطقي أن تكون قادرة على تجميع وإعادة استخدامها لحذف بسيط مسلي (حذف من الجدول حيث مفتاح ...) وUPDATE فقط تحديث الحقول التي تم تغييرها ويختلف ذلك في عملية التحديث.

[) امين

وL2S يستخدم "المخزن sp_executesql" حتى بعد تشغيل هذه هي المرة الأولى سيكون في إجراء مخزن ذاكرة التخزين المؤقت خطة التنفيذ. تشغيل اللاحقة (من نفس الاستعلام - وليس نفس بارامس) وإعادة استخدام الخطة التي تم تجميعها من ذاكرة التخزين المؤقت. ذلك ما كنت طالبا ليتم التعامل التلقائى بواسطة SQL Server "وراء الكواليس".

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