سؤال

وأنا واجهت على تعليق عندما يحاول البرنامج الوصول إلى قاعدة بيانات الفاكهة. لقد مكنت بالفعل الوصول MSDTC شبكة على كل كمبيوتر تطوير بلدي وملقم SQL Server.

والرمز: (العفو رمز تلوين ... لSO يسيئون تفسير بلدي VB .NET)

Using ts As New TransactionScope
            Dim fruit As New FruitDataContext
            Dim thingies As New ThingiesDataContext
            If (From f In fruit.tblApples Where f.Rotten = "Yes" AndAlso f.batch = 1).Count >= 1 Then
                'Record today's date as the day that the rotten apples were dumped.
            End If

            'Other complicated code that uses ThingiesDataContext and FruitDataContext

            du.SubmitChanges()
            ts.Complete()
End Using

وتحرير:

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

System.InvalidCastException: Specified cast is not valid.
   at LinqToSqlQueryVisualizer.SqlQueryInfo.deserialize(Stream stream)
   at LinqToSqlQueryVisualizer.Visualizer.Display(IDialogVisualizerService windowService, Stream rawStream)
   at LinqToSqlQueryVisualizer.DialogChooser.Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
   at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.ManagedShim.DelegatedHost.CreateViewer(IntPtr hwnd, HostServicesHelper hsh, SafeProxyWrapper proxy)

وأنا أيضا بتحرير بيان LINQ ليكون أقرب إلى قانون بلدي الحقيقي.

وتحرير النهائي: حاولت استخدام SqlConnection العادي بدلا من "ثينجيس كما ThingiesDataContext الجديد" واستمرار حدوث المشكلة.

ويبدو أن TransactionScope لا يمكن التعامل مع اتصالات SQL متعددة داخل نفس المعاملة.

<قوية> الرسمية مايكروسوفت ملاحظة

<اقتباس فقرة>   غير معتمدة

والمعاملات الموازية بواسطة SQL Server.

ومن MSDN: http://msdn.microsoft.com/en- لنا / مكتبة / bb896149.aspx

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

المحلول

وهذه ليست قضية MSDTC. لو كان، سوف تحصل على خطأ قائلا لم يتم تمكين DTC ويجب أن يكون. كما انها ليست قضية الجمود، لأنك لن تحصل على خطأ من التفاصيل عن ذلك أيضا.

إذا كان لي أن أخمن، أود أن أقول أن "شفرة معقدة أخرى ..." هو محاولة لتنفيذ عملية قاعدة البيانات ويتم حظر من جانب واحد أو غيرها من الكائنات سياق قاعدة البيانات.

وطريقة واحدة يمكنك تحديد هذه هي لتشغيل SQL التعريف لمعرفة ما هي في الواقع يجري تنفيذ البيانات SQL على الخادم، والتحقق من وجود كتل.

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