كيف يمكنني استخدام Linq مع قاعدة بيانات MySql على Mono؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

هناك العديد من المكتبات التي توفر إمكانيات Linq لتفاعل كود C# مع قاعدة بيانات MySql.أي واحد منهم هو الأكثر استقرارًا وقابلية للاستخدام على Mono؟

الخلفية (غير ذات صلة في الغالب):لدي برنامج C# (.Net 2.0) بسيط لتحديث القيم في قاعدة بيانات MySql.يتم تنفيذه ليلاً عبر وظيفة cron ويعمل على Pentium 3 450Mhz وLinux + Mono.أريد إعادة كتابتها باستخدام Linq (.Net 3.5) في الغالب كتمرين (لم أستخدم Linq بعد).

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

المحلول

موفر linq الوحيد (المجاني) لـ MySql هو ديبلينك, وأعتقد أن الطريق طويل حتى يصبح جاهزًا للإنتاج.

يوجد ايضا ماي دايركت.نت وهو تجاري، ولكنني سمعت آراء متباينة حول قدرته.

لقد قرأت أن MySql ستقوم بتنفيذ Linq to Entities API للإصدار 5.3 من موصل .net، لكنني لا أعرف ما إذا كان هناك جدول زمني لذلك.في الواقع، ظلت MySql صامتة تمامًا بشأن دعم Entity Framework لعدة أشهر.


إضافة:يتمتع الإصدار الأخير من MySql Connector/Net 6.0 بدعم EF وفقًا لملاحظات الإصدار.ليس لدي أي فكرة عن مدى استقرار/فائدة هذا، لذلك أود أن أسمع من أي شخص جربه.

نصائح أخرى

بحسب ال خريطة طريق أحادية لست متأكدًا مما إذا كان Linq متاحًا للأحادية؟

قد يكون بعض Linq على الأقل متاحًا في الإصدار الأخير، ولكن Linq to DB مدرج في Mono 2.4 (فبراير 2009)

لست متأكدًا من Mono، لكنني بدأت للتو في استخدامه سرعة الضوء وهذا يدعم LINQ-to-MySQL.

في الوقت الحالي، لا يمكنك استخدام linq إلى sql، يمكنك البحث عن موفر linq mysql من جهة خارجية أو linq إلى الكيانات.يعمل linq to sql فقط مع قواعد بيانات SQL Server.

LINQ to SQL هي ببساطة طبقة ORM تستفيد من قوة التعبيرات لتسهيل إنشاء الاستعلامات في التعليمات البرمجية الخاصة بك.

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

لقد حاولت البرنامج التعليمي في http://www.primaryobjects.com/CMS/Article100.aspx.يستخدم هذا dblinq/dbmetal لإنشاء فئة سياق البيانات والفئات لكل جدول.

فشل الرمز في المحاولة الأولى مع استثناء غير معالج (MySql.Data.Types.MySqlConversionException:غير قادر على تحويل قيمة التاريخ/الوقت MySQL إلى System.DateTime").كشفت Googling أن هذا يجب حله بسهولة عن طريق إلحاق "السماح لـ Zero DateTime = true ؛" إلى سلسلة الاتصال.لسوء الحظ تبين أن هذا لا يحل مشكلتي.مع اعتقادي أن MySQL .Net Connector هو السبب، قمت بتنفيذ SQL الذي تم إنشاؤه بواسطة dblinq بدون الطبقة الوسيطة linq2sql باستخدام MySQL Connector.هذه المرة لم يحدث أي استثناء.الجداول التي لا تحتوي على عمود تاريخ تعمل مع DbLinq.لذلك، من خلال تجربتي، أتفق مع آدم، أن DbLinq لا يزال بعيدًا عن مرحلة الإنتاج الجاهزة.

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