[.net] إطار الكيان مقابل LINQ إلى SQL



Answers

أعتقد أن الإجابة السريعة والقذرة هي

  • LINQ إلى SQL هي طريقة سريعة وسهلة للقيام بذلك. هذا يعني أنك سوف تحصل على أسرع ، وتقديم أسرع إذا كنت تعمل على شيء أصغر.
  • إطار الكيان هو طريقة شاملة وغير محظورة للقيام بذلك. وهذا يعني أنك ستستغرق وقتًا أطول في التقدم ، وتتطور بشكل أبطأ ، وتزيد من المرونة إذا كنت تعمل على شيء أكبر.
Question

الآن تم إصدار .NET v3.5 SP1 (مع VS2008 SP1) ، لدينا الآن إمكانية الوصول إلى إطار عمل .NET framework.

سؤالي هو هذا. عند محاولة تحديد ما بين استخدام Entity Framework و LINQ إلى SQL كمرجع ORM ، ما الفرق؟

الطريقة التي أفهمها ، إطار الكيان (عند استخدامها مع LINQ إلى الكيانات) هو "الأخ الأكبر" ل LINQ إلى SQL؟ إذا كان هذا هو الحال - ما هي مزاياها؟ ماذا يمكن أن تفعل ذلك LINQ إلى SQL لا تستطيع أن تفعل من تلقاء نفسها؟




هناك عدد من الاختلافات الواضحة الموضحة في هذه المقالة @ lars المنشورة ، لكن الإجابة المختصرة هي:

  • يقترن L2S بإحكام - خاصية الكائن إلى حقل معين من قاعدة البيانات أو بشكل صحيح تعيين كائن إلى مخطط قاعدة بيانات محدد
  • سوف تعمل L2S فقط مع مزود خدمة (بقدر ما أعرف)
  • يسمح EF بتعيين فئة واحدة إلى جداول متعددة
  • سوف تتعامل EF مع علاقات MM
  • سيكون لدى EF القدرة على استهداف أي موفر بيانات ADO.NET

كان الافتراض الأصلي L2S هو لـ Rapid Development و EF لمزيد من تطبيقات "enterprisey" n-tier ، إلا أن بيع L2S قصير بعض الشيء.







انطباعي هو أن قاعدة البيانات الخاصة بك جميلة للغاية أو سيئة للغاية إذا كان Linq2Sql لا تناسب احتياجاتك. لدي حوالي 10 مواقع على حد سواء أكبر وأصغر باستخدام Linq2Sql. لقد نظرت والإطار الكيان عدة مرات ولكن لا أجد سببا جيدا لاستخدامه على Linq2Sql. قال أن أحاول استخدام قواعد البيانات الخاصة بي كنموذج لذلك لدي بالفعل 1 إلى 1 بين النموذج وقاعدة البيانات.

في وظيفتي الحالية لدينا قاعدة بيانات مع 200+ الجداول. قاعدة بيانات قديمة تحتوي على الكثير من الحلول السيئة لذلك يمكنني رؤية ميزة Entity Framework على Linq2Sql لكن ما زلت أفضّل إعادة تصميم قاعدة البيانات لأن قاعدة البيانات هي محرك التطبيق وإذا كانت قاعدة البيانات مصممة بشكل سيئ وبطيء ثم تطبيقي سيكون بطيئا أيضا. إن استخدام إطار الكيان في قاعدة بيانات كهذه يبدو كأنه إصلاح سريع لإخفاء النموذج السيئ ، لكنه لا يمكن أن يخفي الأداء السيئ الذي تحصل عليه من قاعدة البيانات هذه.




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

Linq2Sql يمكن أن تكون متحالفة جيدة ، وذلك باستخدامه مع LinQ يطلق العنان توقيت النامية العظيم.




إذا كانت قاعدة البيانات الخاصة بك بسيطة وبسيطة ، فستقوم LINQ بـ SQL بذلك. إذا كنت تحتاج إلى كيانات منطقية / مستخلصة أعلى جداولك ، فانتقل إلى Entity Framework.




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

تطورت LINQ إلى SQL من مشروع LINQ ، الذي خرج من فريق العمل مع تطوير اللغة. في حين كان إطار الكيان مشروعًا لفريق برمجة البيانات وكان يركز على لغة كيان SQL. لم تعتمد Microsoft أية نية لتصدير LINQ إلى SQL.

لا يزال LINQ إلى SQL جزءًا من ADO.NET بينما يحتوي Entity framework على واجهة برمجة تطبيقات منفصلة. إطار الكيان هو الإصدار الأعلى من LINQ إلى SQL.Entity Framework يستخدم نموذج بيانات الكيان لسد ما بين تطبيقك ومخزن البيانات. هو نموذج بيانات الكيان ، أو EDM ، الذي يوفر تعريف مخططك المفاهيمي بالإضافة إلى معلومات مخطط قاعدة البيانات اللازمة للتفاعل مع قاعدة البيانات وأخيرًا مخطط تعيين يربط بين اثنين.

فيما يلي بعض المهام التي تم تنفيذها بواسطة Entity Framework (Entity data model).

• يولد تلقائيا فئات من النموذج ويقوم بتحديث هذه الفئات بشكل حيوي في أي وقت يتغير النموذج.

• يهتم بكل اتصال قاعدة البيانات بحيث لا يتحمل المطورون عن طريق كتابة الكثير من التعليمات البرمجية للتفاعل مع قاعدة البيانات.

• يوفر بناء جملة استعلام شائع للاستعلام عن النموذج ، وليس قاعدة البيانات ، ثم يترجم هذه الاستعلامات إلى استعلامات يمكن أن تفهمها قاعدة البيانات.

• يوفر آلية لتتبع التغييرات على كائنات النموذج حيث يتم استخدامها في التطبيقات ويعالج التحديثات لقاعدة البيانات.




LINQ إلى SQL

  1. مصدر بيانات متجانس: SQL Server
  2. موصى به للمشاريع الصغيرة فقط حيث تم تصميم بنية البيانات بشكل جيد
  3. يمكن تغيير التعيين دون recompilling مع SqlMetal.exe
  4. .dbml (لغة ترميز قواعد البيانات)
  5. تعيين رأس برأس بين الجداول والفئات
  6. يدعم وراثة TPH
  7. لا يدعم أنواع معقدة
  8. نهج التخزين الأول
  9. عرض قاعدة البيانات مركزية لقاعدة البيانات
  10. تم إنشاؤها بواسطة فريق C #
  11. دعم ولكن لا مزيد من التحسينات المقصود

إطار كيان

  1. Heterogeneus datasource: دعم العديد من مزودي البيانات
  2. موصى به لجميع المشاريع الجديدة باستثناء:
    • صغيرة (LINQ إلى SQL)
    • عندما يكون مصدر البيانات ملف مسطح (ADO.NET)
  3. يمكن تغيير التعيين دون إعادة الضبط عند تعيين نموذج وملفات التعيينات عملية القطع الأولية للبيانات إلى نسخ إلى دليل الإخراج
  4. .edmx (نموذج بيانات الكيان) الذي يحتوي على:
    • SSDL (لغة تعريف مخطط التخزين)
    • CSDL (لغة تعريف المفهوم المخطط)
    • MSL (لغة مواصفات الخرائط)
  5. واحد إلى واحد أو واحد إلى أطراف العديد من التعيينات بين الجداول والفئات
  6. يدعم الإرث:
    • TPH (جدول في التسلسل الهرمي)
    • TPT (جدول لكل نوع)
    • TPC (الجدول حسب فئة الخرسانة)
  7. يدعم أنواع معقدة
  8. الطريقة الأولى ، النموذج الأول ، نُهج التخزين أولاً
  9. عرض مركزية التطبيق من قاعدة البيانات
  10. تم إنشاؤها بواسطة فريق SQL Server
  11. مستقبل واجهات برمجة تطبيقات بيانات Microsoft

أنظر أيضا:






Related