Question

Il existe de nombreuses bibliothèques offrant des fonctionnalités Linq au code C# interagissant avec une base de données MySql.Lequel d’entre eux est le plus stable et utilisable sur Mono ?

Contexte (pour la plupart non pertinent) :J'ai un simple programme C# (.Net 2.0) mettant à jour les valeurs dans une base de données MySql.Il est exécuté de nuit via une tâche cron et fonctionne sur un Pentium 3 450Mhz, Linux + Mono.Je souhaite le réécrire en utilisant Linq (.Net 3.5) principalement comme exercice (je n'ai pas encore utilisé Linq).

Était-ce utile?

La solution

Le seul fournisseur Linq (gratuit) pour MySql est DbLinq, et je pense que c'est loin d'être prêt pour la production.

Il y a aussi MonDirect.Net qui est commercial, mais j'ai entendu des critiques mitigées sur ses capacités.

J'ai lu que MySql implémenterait l'API Linq to Entities pour la version 5.3 du connecteur .net, mais je ne sais pas s'il existe même un calendrier pour cela.En fait, MySql est resté totalement silencieux sur la prise en charge d'Entity Framework depuis des mois.


Addenda:La dernière version de MySql Connector/Net 6.0 prend en charge EF selon les notes de version.Je n'ai aucune idée à quel point c'est stable/utile, donc j'aimerais avoir l'avis de tous ceux qui l'ont essayé.

Autres conseils

Selon le Feuille de route mono Je ne sais pas si Linq est disponible en mono ?

Au moins une partie de Linq pourrait être disponible dans la toute dernière version, mais Linq to DB est répertorié pour Mono 2.4 (février 2009)

Je ne suis pas sûr de Mono, mais je viens de commencer à utiliser Vitesse de la lumière et qui prend en charge LINQ-to-MySQL.

pour le moment, vous ne pouvez pas utiliser Linq to SQL, vous pouvez vous tourner vers un fournisseur Linq MySQL tiers ou Linq vers des entités.linq to sql ne fonctionne que pour les bases de données du serveur SQL.

LINQ to SQL est simplement une couche ORM exploitant la puissance des expressions pour faciliter la construction de requêtes dans votre code.

Si vous appelez simplement des requêtes ad hoc pour votre outil, il n'est pas nécessaire d'utiliser LINQ, cela ajoute simplement une couche supplémentaire d'abstraction à votre code.

J'ai essayé le tutoriel sur http://www.primaryobjects.com/CMS/Article100.aspx.Cela utilise dblinq/dbmetal pour générer la classe de contexte de données et les classes pour chaque table.

Le code a échoué à la première tentative avec une exception non gérée (MySql.Data.Types.MySqlConversionException :Impossible de convertir la valeur date/heure MySQL en System.DateTime").Google a révélé que cela devrait être facilement résolu en ajoutant "Autoriser zéro datetime = true;" à la chaîne de connexion.Malheureusement, cela n’a pas résolu mon problème.Pensant que le connecteur MySQL .Net était à blâmer, j'ai exécuté le SQL généré par dblinq sans la couche intermédiaire linq2sql à l'aide du connecteur MySQL.Cette fois, aucune exception ne s’est produite.Les tables qui n'ont pas de colonne de date fonctionnent avec DbLinq.Donc, d'après mon expérience, je suis d'accord avec Adam, DbLinq est loin d'être prêt pour la production.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top