اتصالات متعددة مع نفس سلسلة الاتصال تحت معاملة واحدة، معاملة مرتفعة؟
-
23-08-2019 - |
سؤال
عند استخدام ADO.NET، وإنشاء اتصالات متعددة إلى قاعدة بيانات MS SQL Server ضمن معاملة واحدة (باستخدام System.Transactions.transactionscope)، هل ينفذ النظام. ترتفع المعاملة من مدير المعاملات خفيفة الوزن إلى منسق المعاملات الموزعة (منسق معاملات Kernel على نظام التشغيل Vista)، حتى لو كانت سلاسل الاتصال هي نفسها لجميع كائنات الاتصال؟
الوثائق غامضة إلى حد ما على هذا الوضع المحدد. تقول إن المعاملة ستحصل على مرتفعة إذا تم فتح اتصال آخر على الخادم أثناء المعاملة ولكنه لا يقول إذا كان الأمر كذلك في كل وقت أو فقط إذا كانت سلسلة الاتصال مختلفة. إنه لا معنى لي أنه سيقوم برفع المعاملة إذا كانت سلسلة الاتصال هي نفسها، ولكن إذا فعلت ذلك، فإنها تجعل أساسا مدير المعاملات خفيفة الوزن عديمة الفائدة تماما، IMO.
المحلول
في الإصدار الحالي، يرفع دائما المعاملة، لسوء الحظ.
الذي تقوله، يجعل المعاملات أقل فائدة بكثير مما هو على خلاف ذلك. أعتقد أن هناك خطط لتغيير هذا في إصدار مستقبلي.