أفضل الممارسات لإدارة Linq إلى ملفات SQL Dbml؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

لقد بدأت للتو في استخدام Linq to SQL، وأتساءل عما إذا كان لدى أي شخص أي أفضل الممارسات التي يمكنه مشاركتها لإدارة ملفات dbml.

  • كيف يمكنك الاحتفاظ بها حتى الآن مع قاعدة البيانات؟
  • هل لديك ملف dbml واحد لقاعدة البيانات بأكملها، أم أنه مقسم إلى وحدات منطقية متعددة؟
  • كيف تعمل إدارة هذا الملف في بيئة الفريق؟

أي نصائح وحيل أخرى موضع ترحيب.

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

المحلول

هل نظرت إلى SQLMetal؟إنه مدعوم رسميًا، على الرغم من عدم الترويج له كثيرًا.يمكنك استخدامه لإنشاء قواعد بيانات قواعد البيانات (dbmls) من سطر الأوامر - لقد استخدمناها كجزء من تحديثات التكامل المستمر لقواعد البيانات (تأكد من أن لديك فصلًا جيدًا للتعليمات البرمجية إذا قمت بذلك بالرغم من ذلك - فالفئات الجزئية هي المنقذ - كما سيحصل على قواعد بيانات dbml) مكتوب فوق).

إذا كنت أتذكر بشكل صحيح فإنه لا يحتوي على نفس الميزات التي يتمتع بها مصمم النموذج في Visual Studio (أعتقد أنه يتعامل مع الجمع بشكل مختلف).هناك أ مشاركة جيدة حول هذا الموضوع على مدونة بن هول.

نصائح أخرى

حقيقة أن مصمم L2S لا يدعم المزامنة مع بنية قاعدة البيانات يمثل قيدًا كبيرًا في ذهني.ومع ذلك، هناك وظيفة إضافية متوفرة توفر بعض إمكانيات إعادة المزامنة:

http://www.huagati.com/dbmltools/

لسوء الحظ، لم يعد مجانيا.

نظرًا لأنك طلبت نصائح وحيل أخرى لإدارة DBML...

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

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

فيما يلي مثال لاختبار وحدة الوحدة للتحقق من تعيين عمود ليتم إنشاؤه تلقائيًا من قاعدة البيانات.

    [Test]
    public void TestMetaData()
    {
        MyObj my_obj = new MyObj()
        {
            Foo = "bar",
        };

        Type type = MyObj.GetType();
        PropertyInfo prop = type.GetProperty("UpdatedOn");
        IEnumerable<ColumnAttribute> info = (IEnumerable<ColumnAttribute>)prop.GetCustomAttributes(typeof(ColumnAttribute), true);
        Assert.IsTrue(
            info.Any<ColumnAttribute>(x => x.IsDbGenerated == true), 
            "The DBML file needs to have MyObj.UpdatedOn AutoGenerated == true set. This must be done manually if the DBML for this table gets refreshed from the database."
        );
    }

PLINQO عبارة عن مجموعة من قوالب إنشاء التعليمات البرمجية التي تنشئ LINQ إلى SQL.وهو يدعم المزامنة مع قاعدة البيانات وتقسيم الكيانات إلى فئات متعددة إلى جانب العديد من الميزات الأخرى التي تجعل من LINQ إلى SQL سهل الاستخدام.

قم بزيارة موقع PLINQO على http://www.plinqo.com وكذلك مقاطع الفيديو التمهيدية.

فيما يلي رابط يوفر معلومات جيدة حول أفضل ممارسات LINQ إلى SQL

http://www.a2zmenu.com/LINQ/LINQ%20to%20SQL%20Best%20Practice.aspx

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