تبديل استراتيجية الوصول إلى البيانات بعيدا في مشروع؟

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

سؤال

في مشروع قمنا بتنفيذ طبقة الوصول إلى البيانات (DAL) مع مصمم مرئي يقوم بإنشاء الكثير من التعليمات البرمجية (في علمنا: مجموعات بيانات مكتوبة قوية و DataSettableAdapters في .NET).

ومع ذلك، فإن استخدام عنصر تحكم المصدر أجد أنه مزعج لتحرير وإضافة أشياء جديدة إلى DAL. لقد بدأنا ترميز الوصول إلى بيانات جديدة من خلال كتابة بيانات SQL يدويا (في علمنا: ADO.NET SQLCommands وغيرها) التي تبدو نظافة لي للتعديل، وخاصة لمعرفة التغييرات في التحكم في المصدر.

لكنني أشعر أيضا بالقلق بشأن خلط أساليب الوصول إلى البيانات. ما اقتراحك؟ التمسك بطريقة الجيل التلقائي، متابعة التحويل إلى بيانات SQL "اليدوية" عند حاجة إلى تغييرات، أو أي شيء آخر؟

تحرير: مستوحاة من الإجابات الجميلة التي تعالج المشكلة العامة لتحويل استراتيجية الوصول إلى البيانات، لقد أعمز بصياغة السؤال.

التعامل مع البيانات النموذجية ليست موجهة نحو الكائن. نحن نستخدم .NET DataTables بدلا من الكائنات المخصصة.

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

المحلول

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

بالمناسبة لك عبارة سؤالك، لا يبدو أنك ذاهب إلى نهج أكثر توجها نحو كائن سواء، مما قد يكون حجة للذهاب بعيدا عن نهج محول DataSet + Table.

قد ترغب في القيام ببعض الأبحاث / النماذج الأولية في مجال أو mapper + كائنات نقية أيضا، إذا كان لديك منطق أعمال معقدة بشكل متزايد للتعامل معه. انها أقل فعالية لنهج الراد رغم ذلك. أتحقق من LinQ 2 SQL (إذا كان لديك بنية مخطط / كائن بسيط وسعداء برسم الخرائط 1: 1 بين الكائن والجدول) أو Nhibernate إذا كنت أنت. إطار الكيان ليس ناضجا بما فيه الكفاية. سيكون الإصدار التالي أفضل، لكنه لا يزال يحتمل أن يأتي وقتا طويلا.

نصائح أخرى

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

الذهاب إلى مستقيم "عارية" ado.net والقيام بكل أعمال دال يدويا في التعليمات البرمجية يبدو وكأنه الكثير من الجهد. بالتأكيد أود أن أوصي بالنظر إلى مخطط أو مقسم مثل الموصى بها من قبل الآخرين (أحمق، الخدمة السرية وما إلى ذلك).

إذا كانت الواجهة الخلفية الخاصة بك في SQL Server وأنت على .NET 3.0 أو أعلى، فيمكنك أيضا أن ننظر إلى LinQ2SQL (أبالغ شائعات من وفاتها مبالغ فيها إلى حد كبير) لسيناريوهات أبسط (1: 1 تعيين من جداول قاعدة البيانات إلى كائنات طبقة قاعدة البيانات الخاصة بك) أو إطار كيان لسيناريوهات أكثر تقدما (الكثير من الجداول، الكثير من ميراث الكائنات في نموذج المجال الخاص بك، سيناريوهات التعيين المعقدة).

تم الحصول على EF الكثير من الراب السيئ في الآونة الأخيرة، والتي لا تبررها جزئيا فقط، IMHO، والنسخة الجديدة، EF V4 (المستحقة مع .NET 4.0 و VS 2010 في وقت ما هذا العام أو العام المقبل) تبدو واعدة حقا.

مارك

إذا كنت تقوم بإعادة كتابة دال تماما، فربما يجب عليك النظر في إطار الثبات sprint.net. أو nhibernate..

... أو دون سرعة الصوت من روب كونري :)

انظر على الأقل 3 مقاطع الفيديو 3 التي يمكنك العثور عليها في صفحة المشروع.

DAL هو الجزء الأكثر عادة في الجزء الأكثر ترميزا من أي تطبيق. احتفظ به بسيطة وبناء ما تحتاجه الآن أو يتوقع معقول الحاجة قريبا جدا. لا تزال SQLCommand، SQLDTATAREADER، إلخ. مجردة نسبيا مقارنة بالمكسرات والبراغي المتصلة فعليا، والقراءة من قاعدة بيانات والكتابة إليها.

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

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