سؤال

عندما أقوم بإضافة إجراءات مخزنة إلى datacontext LINQ ، يقوم Visual Studio الافتراضي ببلاغ الإجراء المخزن باستخدام مخطط SQL الذي يوجد فيه. هل هناك أي طريقة لإيقاف هذا؟ في بيئتنا ، قد يتم نقل الإجراءات المخزنة إلى مخططات أخرى مع مرور الوقت ، وسنقوم بالتخلي عن المخطط بناءً على مستخدم SQL المستخدم للاتصال. هل يجب علي القيام بذلك يدويًا أم أنه يمكنني إيقاف بادئات المخطط بطريقة ما؟

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

المحلول

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

الحفر بشكل أعمق ، يتم تخزين اسم المخطط في الدعم dbml ملف XML ، ثم يتم تضمينه في المنشأ designer.cs الملف الذي يحتوي على الوظائف / الأساليب التي تسمى.

// dbml
<Function Name="dbo.MyProc" Method="MyProc">

// designer.cs
[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.MyProc")]
public int MyProc()

إذا قمت بتحرير ملف dbml ملف XML لإزالة المخطط وحفظه داخل Visual Studio ، سيتم تجديد الكود مثل هذا:

// changed dbml - removed the dbo schema
<Function Name="MyProc" Method="MyProc">

// the resultant generated code in designer.cs
[global::System.Data.Linq.Mapping.FunctionAttribute()]
public int MyProc()

التي عملت لحسابي ، وتسجيل الدخول باستخدام DBO كمخطط افتراضي. سأترك الاختبار لك.

قد يكون هذا حلًا عمليًا - لا يزال المصمم البصري يعمل مثل هذا ، ويمكن إضافة عناصر أخرى وما إلى ذلك دون كسر الوظيفة الخالية من المخطط ، ولا تتسبب الوظيفة نفسها في تقديم شكوى للمصمم. حظا سعيدا!

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