الوصول إلى قاعدة بيانات SQL للمدرسة القديمة مقابل ORM (NHibernate، EF، وآخرون).من يفوز؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

لقد نجحت في كتابة رمز الوصول إلى SQL الخاص بي مع مجموعة من الإجراءات المخزنة والاستعلامات ذات المعلمات ومكتبة مجمعة صغيرة كتبتها لتقليل ADO.NET grunge.لقد نجح كل هذا بشكل جيد جدًا بالنسبة لي في الماضي وكنت منتجًا جدًا معه.

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

كود ADO.NET القديم أم ORM؟أنا متأكد من وجود منحنى - هل يحتوي المنحنى على عائد استثمار يجعل الأمور جديرة بالاهتمام؟أنا حريصة ومستعدة للتعلم، ولكن لدي موعد نهائي.

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

المحلول

سؤال جيد ولكنه موضوع مثير للجدل للغاية.

هذه التدوينة من فرانس بوما منذ بضع سنوات مضت، أدى الاستشهاد بإيجابيات SQL الديناميكية (مما يعني ضمنًا ORMs) على الإجراءات المخزنة إلى إثارة حرب اللهب النارية.

نصائح أخرى

أجد أن LINQ إلى SQL أسرع بكثير عندما أقوم بإعداد نماذج أولية للتعليمات البرمجية.إنه يفجر أي طريقة أخرى عندما أحتاج إلى شيء الآن.

ولكن هناك تكلفة.بالمقارنة مع المنتجات المخزنة الملفوفة يدويًا، فإن LINQ بطيء.خاصة إذا لم تكن حذرًا للغاية لأن التغييرات البسيطة التي تبدو بسيطة يمكن أن تؤدي فجأة إلى تحول واحد إلى استعلامات 1+N.

توصيتي.استخدم LINQ إلى SQL في البداية، ثم انتقل إلى procs إذا لم تحصل على الأداء الذي تحتاجه.

لقد جرت مناقشة رائعة حول هذا الموضوع في DevTeach في مونتريال.إذا ذهبت إلى عنوان URL هذا: http://www.dotnetrocks.com/default.aspx?showNum=240 ستتمكن من الاستماع إلى خبيرين في هذا المجال (تيد نيوارد وأورين عيني) يناقشان إيجابيات وسلبيات كل نهج.ربما تكون أفضل إجابة ستجدها حول موضوع ليس له إجابة حقيقية محددة.

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