سؤال

إذا بدء مشروع جديد ما استخدم ORM NHibernate أو ينق و لماذا.ما هي إيجابيات وسلبيات كل منها.

تحرير:LINQ to SQL ليس فقط ينق (شكرا @جون Limjap)

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

المحلول

لقد سألت نفسي جدا مثل هذا السؤال إلا أنه بدلا من NHibernate كنت أفكر WilsonORM التي يجب النظر لطيف جدا.

يبدو لي أن هناك العديد من الاختلافات الهامة.

LINQ:

  • ليست كاملة ORM أداة (يمكنك الحصول على هناك مع بعض مكتبات إضافية مثل أحدث إطار الكيان - أنا شخصيا النظر في بنية هذا أحدث التقنيات من مايكروسوفت إلى أن حوالي 10 سنوات بالمقارنة مع غيرها من ORM الأطر)
  • هو في المقام الأول الاستعلام عن "اللغة" دعم التحسس (المترجم التحقق من بناء جملة الاستعلام الخاص بك)
  • يستخدم في المقام الأول مع Microsoft SQL Server
  • مغلق المصدر

NHibernate:

  • هو أداة ORM
  • وقد محدود جدا للاستعلام اللغة دون التحسس
  • يمكن استخدامها مع أي تقريبا DBMS التي لديك DB
  • هو المصدر المفتوح

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

إذا كنت تطوير تطبيق ويب التي عادة ما تكون مجرد الاستعلام البيانات فقط ويكتب أحيانا بعض البيانات إلى DB ثم أود أن أوصي جيدة الاستعلام عن اللغة مثل Linq.

لذلك كما هو الحال دائما, ذلك يعتمد.:-)

نصائح أخرى

Errr...هناك ينق ل NHibernate.

ولعل ما تعنيه هو الذي الاستخدام:

  • LINQ to SQL
  • NHibernate

أنا أفضل NHibernate.

LINQ to SQL هي خفيفة الوزن إلى حد ما ، ولكن انها قليلا أكثر إحكاما بالإضافة إلى بنية البيانات الخاصة بك بدلا NHibernate الذي هو الى حد المرونة في حيث أنواع كائن التعاريف التي يمكن تعيينها إلى الجدول الخاص بك الهياكل.

بالطبع هذا لا يعني أن LINQ to SQL قد لا يستخدم:هذا الموقع يستخدم ذلك.أعتقد أنه من المفيد جدا الحصول على وتشغيلها في التطبيقات الصغيرة حيث مخطط قاعدة البيانات ليست ضخمة.

تبدأ مع NHibernate هو فكرة سيئة.يظهر الأداء الجيد فقط مع باقتدار الإعدادات.محاولة استخدام EFv4 للمشاريع الكبيرة و L2S (ربما 3-الجزء المنتجات) للشركات الصغيرة والمتوسطة الحجم.هذه المنتجات هي أكثر ملاءمة ومرونة من NHibernate و تسمح لك أن تبدأ بسرعة.

ليست قائمة كاملة

LinqToSQL برو:

  • أفضل أداة دعم
  • جيد linq مزود
  • من السهل أن تبدأ عند db schema == دروس -

Con:

  • ليست مرنة (أي db schema != فصول)
  • فقط يدعم MS SQL Server
  • لا المتتالية (حفظ وتحديث ...لا تتالي إلى الكائنات المشار إليها)

NHibernate برو:

  • الكثير rdbms دعم ootb
  • ميزة الغنية
  • مرنة جدا تقريبا جميع الحالات الزاوية
  • مفتوحة المصدر

Con:

  • ليس من السهل أن تبدأ مع
  • ليس من MS
  • هناك العديد من الأدوات ، ولكن عليك البحث عن

بين 2 ORMs

وأود أن اختيار LinqToSql إذا:

  • -db schema == دروس
  • فقط من أي وقت مضى استخدام MS SQL Server
  • المحل فقط يسمح MS-المنتجات

وأود أن اختيار Nhibernate إذا:

  • ثراء objectmodel
  • إرث-db schema
  • DB أخرى من MS SQL Server أو دعم متعددة
  • الأداء الحرجة (أعتقد NH لديه المزيد من الميزات لتحسين الأداء من LinqToSql)

ملاحظة:هذا هو رأيي الشخصي.أنا تتعامل في الغالب مع (مجنون) تراث dbs ومعقدة ETL الوظائف حيث طراز كائن يساعد كثيرا على SQL.

لا تستخدم (أو حتى معرفة) NHibernate, أنا فقط أريد أن أقدم شهادتي:يمكنني استخدام LINQ to SQL منذ حوالي 2 سنوات مع MySQL و PostgreSQL قواعد البيانات (باستخدام DbLinq على ويندوز باستخدام مونو على Linux و Mac OS X).

حتى LINQ to SQL لا يقتصر على منتجات Microsoft.

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

ملاحظة :LINQ to SQL server لا يدعم العديد إلى العديد من العلاقات (ولكن هذا لا يمكن أن يتحقق بسهولة مع عدد قليل من السطور البرمجية).

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

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