في أي سيناريوهات أرغب في إنشاء كائنات عمل مخصصة من LINQ إلى SQL نتائج؟

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

سؤال

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

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

Product.productid و Product.productName

وبعد ذلك أود تحديد كائن أعمال منتج مخصص مثل ذلك:

class BusineszProduct
{
    string ProductId;
    string ProductName;
}

وبعض رمز التعيين البسيط مثل:

BusinessProduct myProduct = New BusinessProduct () ؛ myProduct.productid = product.productId ؛ myProduct.productName = product.productName ؛

ثم مرر النيزة myProd حول طبقة العمل الخاصة بي ، وقم بتعديلها ، وقراءتها وما إلى ذلك ، ثم تحديث كائن LINQ لاحقًا.

في أي سيناريوهات أرغب في إنشاء فئة منتجات الأعمال المخصصة؟

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

المحلول

IMHO ، السبب العام هو فصل / فصل كيانات عملك من أمتعة LINQ2SQL ORM التي تأتي مع كيانات LINQ2SQL

ومع ذلك ، في سيناريو متطرف ، قد يكون لديك تعيينات متعددة:

  • كيانات LINQ2SQL لطبقة "الوصول إلى البيانات" - ومع ذلك ، يتم اقترانها بإحكام مع Datacontext L2S
  • سيتم استخدام POCOS / الكيانات التجارية لتطبيق قاعدة العمل ، والتحقق من الصحة ، إلخ
  • إذا كنت تستخدم خدمات الويب أو WCF ، فقد تمثل أيضًا البيانات ككيانات رسائل على سبيل المثال إذا كنت بحاجة إلى تقديم الكيانات بتنسيق محدد للغاية عندما يتم تسلسلها عبر السلك
  • وأخيرًا ، إذا كان لديك بنية واجهة المستخدم MVC / MVP / MVVM ، فقد ترغب في أن تكون كيانات مصممة لآرائك

نصائح أخرى

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

يمكنك مشاهدته بنفسك (في http://www.njtheater.org)

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

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