أسب.نت إم في سي:إنشاء فئات نموذجية باستخدام LINQ إلى SQL

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

  •  10-07-2019
  •  | 
  •  

سؤال

أحاول تعلم Asp.net Mvc لذا أحاول ذلكهذا درس تعليمي.

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

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

ملحوظة:لم أفهم حقًا كيفية عمل الواجهة قبل قراءة هذا البرنامج التعليمي ولا يزال الأمر غير واضح بنسبة 100%.أراه الآن كنوع من "القالب" للفصل الدراسي.

بعد استخدام Linq to Sql بنجاح، اعتقدت أنه سيكون من الجيد تجربة Ado.net Entity Framework نظرًا لأنني قرأت الكثير عن هذا الأمر.قالوا إن استخدام نموذج المستودع سيجعل من السهل التبديل، لذا اعتقدت أنني سأختبر ذلك.

سؤالي هو: ماذا علي أن أفعل للتغيير إلى Ado.net EF؟

هذا ما أعتقد أنني يجب أن أفعله.

  • أضف ملف Movie.edmx وقم بتكوينه (أضف جدول الفيلم الخاص بي).
  • اكتب فصلًا جديدًا يعتمد على IMovieRepository وربما أطلق عليه اسم MovieEFRepository.
  • قم بتغيير المعلمة في مُنشئ وحدة التحكم إلى MovieEFRepository.هذا هو أول شيء أجده غريبًا لأنه في البرنامج التعليمي يقولون إن عدم استخدام المستودع سيجبرك على تغيير جميع وحدات التحكم إذا قمت بالتغيير إلى مصدر بيانات آخر.ألا أحتاج إلى تغيير كل وحدة تحكم على أي حال لأنني أحدد فئة MovieRepository؟
  • التعديل الأخير الذي أعتقد أنني بحاجة إلى القيام به هو تغيير العرض.لأنه يستخدم فئة المنتج التي تم إنشاؤها بواسطة مصمم Linq to Sql.لست متأكدا كيف سأفعل هذا.أعتقد أنه كان ينبغي علي استخدام بعض الكائنات التي لا تعتمد على ملف dbml؟

سامحني إذا كانت لدي نظرة مبسطة بعض الشيء عن Asp.net Mvc.أنا مصمم ويب ولدي اهتمام كبير بتطوير الويب Asp.net.

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

المحلول

ربما تم فصل مستودعك بسبب الحقن، وليس إذا اتبعت الأمثلة فقط بسبب ذلك

public MoviesController() : this(new **MovieRepository**())

أنصحك بقراءة معلومات عن IOC، فهي سهلة ومثيرة للاهتمام للغاية، ويمكنك استخدام حاوية IOC مثل Castle Windsor.

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

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

إذا لم تفعل هذه الأشياء، فمن حقك أن تغير كل ما قلته.

آمل أن يساعد!اعتذر للغتي الإنجليزية!

نصائح أخرى

لذلك، بعد بضعة أيام من القراءة والكثير من البحث على Google، بدأت العمل.حاولت أولاً معرفة المعنى الحقيقي لـ IoC (انعكاس التحكم).

كان أحد المواقع الأولى التي عثرت عليها هو موقع ويب يحتوي على تسجيل صوتي للشاشة عن Unity.وهو إطار عمل DI/IoC لـ .Net.

بالنظر إليه الآن، يعد هذا في الواقع تسجيلًا رقميًا للشاشة جيدًا جدًا ومثالًا على مدى سهولة استخدام Unity وIoC/DI.في ذلك الوقت لم أفهم الأمر تمامًا، لذا واصلت البحث على Google.

أحد مواقع الويب التي ظللت أتصفحها هو موقع مارتن فاولر.

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

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

لم تكن الوثائق سيئة ولكن واجهت بعض المشكلات في تحويل المثال الأساسي "للبدء" إلى تطبيق Asp.net Mvc الخاص بي.كما أن الجزء 2 و 3 كانا مفقودين منذ بدايتهما.

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

لقد واجهت الكثير من المشكلات مع ملفات تكوين xml ولم أتمكن من تشغيلها.لقد قمت بتجريب Windsor وStructure Map وSpring.net، ولكنني كنت أتعثر دائمًا في استخدام ملفات xml.

لذلك قررت أن أذهب إلى موقع Asp.net Mvc لأنه هو المكان الذي بدأت فيه التعرف على Asp.net Mvc.لقد وجدت تسجيلات الشاشة الأولى وعروض MIX09 واضحة جدًا وفهمت معظم ما كان يتحدث عنه الناس.لقد علقت في تسجيل الشاشة الثاني بواسطة Rob Conery عند إنشاء تطبيق Storefront.نظرًا لأنني كنت أعرف المزيد عن المستودع وIOC/DI، فقد اعتقدت الآن أنها ستكون فكرة جيدة أن أبدأ في مشاهدة التسجيلات الرقمية للشاشة الخاصة بـ Rob Conery مرة أخرى.يتحدث في إحدى تسجيلات الشاشة عن تحميل جميع العينات إلى codeplex.

ذهبت إلى codeplex واكتشفت أنه يمكنك تصفح الملفات المصدر دون تنزيلها.حاولت معرفة كيفية تعامل Rob Conery مع IOC/DI من خلال مستودعاته.لذلك كنت سعيدًا برؤيته كان يستخدم Structure Map ولكن بدلاً من استخدام ملف تكوين xml، كان يستخدم فئة bootstrapper التي تسجل جميع الواجهات في فئتها المحددة.

بعد تجربة ذلك باستخدام تطبيق الويب الخاص بي، تمكنت أخيرًا من تشغيل خريطة الهيكل في تطبيقي (مرحبًا).

لقد أوضح لي أيضًا كيفية إصلاح التبعية لفئة المنتج الخاصة بي والتي تأتي من Linq إلى Sql.يقوم بإنشاء كائن إضافي يتم استدعاؤه بعد ذلك عن طريق "تحديد منتج جديد { }" في استعلامات Linq.

واو، هذه الإجابة أطول قليلاً مما خططت له ولكن آمل أن يساعد هذا الأشخاص الآخرين مثلي الذين هم مبتدئون جدًا في البرمجة وAsp.net Mvc.

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