سؤال

لديّ طريقة عرض مفهرسة أحتاج إلى تحديد تلميح noexpand من أجل القيام بها بشكل معقول. لسوء الحظ ، كما هو موضح فيما يتعلق بتعديل LINQ إلى SQL الذي تم إنشاؤه T-SQL من تلميح Nolock ، يبدو أنه لا توجد طريقة سهلة للاستفادة من هذه التلميحات مباشرة أو هناك؟

أفكر هو أنه سيكون من المنطقي السماح بتخصيص هذه الأشياء من خلال استخدام السمات أو بشكل إعلاني من خلال DBML. أيضًا نظرًا لأن LINQ إلى SQL يبدو أنه يعمل فقط على استهداف SQL Server ، فمن المنطقي فقط أننا قادرون أيضًا على الاستفادة من هذه الميزات المتقدمة (إذا كانت موجودة). بغض النظر عن التنفيذ على الرغم من أنني مهتم بأي طرق إبداعية لحل هذه المشكلة.

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

المحلول

لقد وجدت حللاً يبدو أنه يعمل ولكنه يتطلب تقديم عرض ثانٍ لكل عرض SQL الذي يريد المرء استخدام تلميح NoExpand معه. في العرض الثاني ، فقط حدد جميع الحقول من العرض الأصلي وتصرف على تلميح noexpand. يمكن لأي استعلام من LINQ إلى SQL الذي يحتاج إلى استخدام تلميح NoExpand الآن استهداف هذا العرض الذي يلف الأصل.

يمكن العثور على مزيد من التفاصيل في هذا المنشور MSDN.

أحد الجانبين من بين آخرين للنظر فيه عند إنشاء طرق عرض تابعة هو أنه سيتعين عليك التأكد

هل لدى أي شخص أي بدائل أفضل؟ أفضل عدم الاضطرار إلى إنشاء مشاهدات SQL إضافية فقط لدعم استخدام هذا التلميح المحسن اللازم.

نصائح أخرى

أنا أتفق تمامًا ، لكنني لا أعتقد أن هناك مثل هذه الطريقة. في EF4 يمكنك استخدام ExecuteStoreCommand سيتيح لك ذلك تنفيذ SQL مباشرة. قد يكون هذا هو خيارك الوحيد إذا كان الأداء غير مقبول.

== تحرير ==

يمكنك أيضًا القيام بذلك في LINQ إلى SQL من خلال ExecuteQuery طريقة.

http://msdn.microsoft.com/en-us/library/bb399403.aspx

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