BestPractice: إيجابيات وسلبيات لاستخدام السيارات أو LINQ (LINQ إلى الكائنات) للتخطيط بين نموذج المجال ونموذج العرض التقديمي

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

سؤال

ماذا تعتقد؟ كيف يمكنك أن تقوم بتخطيط بين مجالك ونموذج العرض التقديمي؟

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

المحلول

نقلا عن جزء من إجابة من سؤال آخر للسيارات:

إذا كان لديك كائن من نوع واحد وتريد ملء خصائص كائن من نوع آخر باستخدام خصائص من النوع الأول ، فلديك خياران:

  1. اكتب رمزًا يدويًا للقيام بهذا التعيين.
  2. استخدم أداة ستتعامل تلقائيًا من أجلك.

السيارات مثال 2.

LINQ إلى الكائنات هو مثال على 1-يحدث أن يكون أقل إيلامًا قليلاً من كتابة رمز رسم الخرائط الكائن إلى الكائنات الفانيلا.

من حيث الايجابيات والسلبيات:

  • يجب أن يقلل السيارات بشكل كبير من كمية التعليمات البرمجية التي يتعين عليك كتابتها مقارنةً بـ LINQ حيث تستخدم الاتفاقيات لتحديد التعيينات الافتراضية. باستخدام LINQ ، يجب تحديد هذه التعيينات الافتراضية.

  • باستخدام LINQ ، سيكون من الضروري تحديد التعيينات في كلا الاتجاهين - يجب أن تكون السيارات قادرة على العمل تلقائيًا عند استخدام الاتفاقيات.

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

ملاحظة ، يمكن استخدام السيارات بالاقتران مع LINQ (و LINQ2SQL) - بعد منشور سيارة آخر وهو ما يفسر بعض النقاط الدقيقة.

نصائح أخرى

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

قل أن لديك فئتان C# -

namespace MyDtoNamespace {
    public class MyClass {
        public int Id { get; set; }
}}

namespace MyBusinessLayerNamespace {
    public class MyClass {
        public int Id { get; set; }
}}

سيقوم سيارة السيارات بتخطيط بين هاتين الفئتين بشكل جيد مع القليل من التكوين الصريح المطلوب.

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

namespace MyBusinessLayerNamespace {
    public class MyClass {
        public int MyNewIdentifierVariableName { get; set; }
}}

أنا أبحث بعناية عن المراجع في Visual Studio وأعتبر تأثير إعادة تسمية هذه المراجع - ولكن لأن myDtonamesPace.myclass.id لا يشير صراحة إلى mybusinesslayermaspace.myclass.id ، لا أراها أبدًا.

عندما تقوم Visual Studio أو أداة أخرى تلقائيًا بإعادة تسمية جميع حالات المتغير بالنسبة لي في الحل ، فإن رسم خرائط السيارات ينفجر.

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

من المؤكد أنني لا أجادل في تجنب السيارات تمامًا ، مع الإشارة إلى أن مشكلة كبيرة في البرمجة حسب الاتفاقية.

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