سؤال

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

  1. رمز العميل يجب أن تعمل مع تنظيف الكائنات عرض أي بيانات المعرفة.عند استخدام إطار عادتنا رمز العميل تبدو مثل:

    SessionManager الدورة الجديدة = SessionManager();النظام order = الدورة.CreateEntity();النظام.تاريخ = DateTime.الآن ؛ // مجموعة خصائص أخرى OrderDetail التفاصيل = النظام.AddOrderDetail();التفاصيل.Product = المنتج ؛ // خصائص أخرى

    // ارتكاب جميع التغييرات الآن الدورة.Commit () ؛

  2. ينبغي أن تكون بسيطة بقدر الإمكان وليس "أكثر مرونة".نحن بحاجة إلى وسيلة واحدة أن تفعل معظم الأشياء.

  3. يجب أن يكون دعما جيدا البرمجة الشيئية.يجب التعامل مع واحدة إلى العديد و العديد من العلاقات يجب التعامل مع الميراث ، ودعم تحميل كسول.
  4. التكوين ويفضل أن تكون XML القائمة.

مع معرفتي الحالية أرى هذه الخيارات:

  1. تحسين الإطار الحالي - المشكلة هي أنه يحتاج إلى قدر كبير من الجهد.
  2. ADO.NET إطار الكيان لا يكون لدينا فهم جيد, ولكن يبدو معقدة جدا و لديه ملاحظات سيئة.
  3. LINQ to SQL - لا يكون حسن التعامل من وجوه المنحى الممارسات.
  4. nHibernate - يبدو خيارا جيدا ، ولكن بعض المستخدمين الإبلاغ عن الكثير من أخطاء قديمة.
  5. دون سرعة الصوت - من مقدمة قصيرة ، يبدو مرنة جدا.أنا لا أريد أن.

ماذا تقترح ؟

تحرير:

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

  1. لأنه يقوم على البيانات, لذا فإن أول شيء عليك القيام به هو تكوين البيانات وكتابة الاستفسارات تحتاج إليه هناك.
  2. يمكنك إنشاء ملف التكوين XML التي تحدد كيفية بيانات الجداول خريطة على الكائنات و أيضا تحديد الجمعيات بينهما (دعم جميع أنواع الجمعيات).3.مخصص أداة تحليل XML تكوين وتوليد التعليمات البرمجية الضرورية.4.إنشاء فصول ترث من قاعدة مشتركة الدرجة.

أن تكون متوافقة مع إطار قاعدة البيانات يجب أن تستوفي هذه المعايير:

  1. ويجب أن يكون لكل جدول واحد عمود المفتاح الأساسي.
  2. جميع الجداول يجب أن يكون المفتاح الأساسي من نفس نوع البيانات المتولدة على العميل.
  3. التعامل مع الميراث إلا جدول واحد الميراث معتمد.أيضا ملف XML تقريبا دائما يقدم وسيلة واحدة لتحقيق شيء ما.

ما نريد أن الدعم الآن هو:

  • إزالة التبعية من مجموعات البيانات.SQL البرمجية يجب أن تتولد تلقائيا ولكن الإطار لا ينبغي أن تولد المخطط.أريد أن التحكم يدويا DB schema.
  • أكثر قوة دعم الميراث الهرمية.
  • اختياري التكامل مع LINQ.

وآمل أن يكون أكثر وضوحا الآن ما أنا أبحث عنه.

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

المحلول

تحسين الإطار الحالي - المشكلة هي أنه يحتاج إلى قدر كبير من الجهد

في سؤالك لم تعطى السبب لماذا يجب كتابة الوظيفة المتاحة من العديد من الأماكن الأخرى.أود أن أقترح أن إعادة اختراع ORM ليس من حسن استخدام الوقت الخاص بك إلا إذا كان لديك احتياجات فريدة من نوعها على ORM التي لم تحدد في السؤال.

ADO.NET إطار الكيان

نحن نستخدم إطار كيان في العالم الحقيقي, إنتاج البرمجيات.معقد ؟ ليس أكثر من معظم الدول الأخرى ORMs بقدر ما استطيع ان اقول ، وهو يقول ، "معقدة إلى حد ما." ومع ذلك ، فإنه هو جديد نسبيا ، هناك أقل من تجربة المجتمع والوثائق من شيء مثل NHibernate.وبالتالي فإن عدم وجود وثائق قد تجعل الأمر يبدو أكثر تعقيدا.

الكيان إطار NHibernate تأخذ بوضوح نهج مختلفة لمشكلة سد الكائن العلائقية تقسيم.لقد كتبت عن ذلك في المزيد من التفاصيل في هذا بلوق وظيفة.يجب النظر في النهج الذي يجعل معظم معانيها لك.

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

  • عدم بوكو الدعم.هذه ليست مشكلة بالنسبة لبعض التطبيقات ، وهي قضية للآخرين.بوكو الدعم من المرجح أن تكون إضافة في إصدار مستقبلي, ولكن اليوم, أفضل إطار الكيان يمكن أن تقدم IPOCO.
  • متجانسة ملف التعيين.هذا لم يكن مشكلة كبيرة بالنسبة لنا منذ الفوقية ليست في تغير مستمر.

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

LINQ to SQL - لا يكون حسن التعامل من وجوه المنحى الممارسات

وأنا أتفق.أنا أيضا لا أحب SQL Server التركيز.

nHibernate - يبدو خيارا جيدا ، ولكن بعض المستخدمين الإبلاغ عن الكثير من أخطاء قديمة.

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

دون سرعة الصوت - من مقدمة قصيرة ، يبدو مرنة جدا.أنا لا أريد أن.

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

نصائح أخرى

LLBLGen جيد جدا ORM أداة التي سوف تفعل تقريبا كل ما تحتاجه.

iBATIS هو المفضل لدي لأنه يمكنك الحصول على أفضل الحبوب من السيطرة على SQL

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

مثال XPO سوف يكون رمز:

using (UnitOfWork uow = new UnitOfWork())
{
  Order order = new Order(uow);
  order.Date = DateTime.Now();
  uow.CommitChanges();
}

أقترح عليك أن نلقي نظرة على ActiveRecord من القلعة ليس لدي تجربة الإنتاج مع ذلك, لقد لعبت حوالي مع عينة التطبيق.يبدو من السهل حقا للعمل مع, ولكن أنا لا أعرف جيدا بما فيه الكفاية لمعرفة ما اذا كان يناسب جميع الاحتياجات الخاصة بك

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