Utiliser MySQL avec Entity Framework [fermé]

269

Je ne trouve rien de pertinent sur Entity Framework / MySQL sur Google, donc j'espère que quelqu'un le sait.

vintana
la source
8
franchement, le support mysql pour LINQ est de la merde! Je me cogne la tête sur des problèmes mineurs depuis une semaine: | ...
effkay
1
avez-vous utilisé dblinq code.google.com/p/dblinq2007 ?
Sharique

Réponses:

193

Il a été publié - Obtenez le connecteur MySQL pour .Net v6.5 - cela prend en charge [Entity Framework]

J'attendais cela tout le temps, bien que le support soit basique, fonctionne pour la plupart des scénarios de base d'interaction db. Il a également une intégration de base de Visual Studio.

MISE À JOUR http://dev.mysql.com/downloads/connector/net/ À partir de la version 6.7, Connector / Net n'inclura plus l'intégration MySQL pour Visual Studio. Cette fonctionnalité est maintenant disponible dans un produit distinct appelé MySQL pour Visual Studio disponible à l'aide du programme d'installation MySQL pour Windows (voir http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html ).

Vin
la source
4
Je pensais mentionner que la dernière version est disponible ici (version actuelle 6.2.2): mysql.com/downloads/connector/net
Brett Ryan
3
Est-ce que cela prend en charge EF4 et VS2010? J'ai installé le connecteur et essayé d'ajouter une nouvelle connexion dans VS2010 mais MySQL n'apparaît pas dans la liste des fournisseurs
Abhijeet Patel
1
Je suis curieux de savoir MySQL, EF4 et VS2010.
Vinicius Rocha
1
Il devrait l'être si vous avez le dernier connecteur. Je viens de déplacer mon produit vers .NET4 spécifiquement en raison de la prise en charge de MySQL Entity. Les outils et tout fonctionnent bien, mais le gros problème est le support sous-jacent qu'il fournit pour les requêtes réelles. Il y a pas mal de problèmes avec les expressions lamba que vous ne rencontrez pas avec MSSQL
David Anderson
1
Bien sûr, de nouvelles versions sortent. Prise en charge de EF5, version 6.7.4: dev.mysql.com/downloads/connector/net/#downloads De plus, depuis cette version, le plug-in VS avec serveur MySQL et les autres outils inclus sont regroupés dans un package: dev.mysql.com / ressources-techniques / articles /…
Nullius
22

Consultez mon article sur ce sujet.

http://pattersonc.com/blog/index.php/2009/04/01/using-mysql-with-entity-framework-and-aspnet-mvc-–-part-i/

pattersonc
la source
J'ai corrigé l'encodage de ce lien - les utilisateurs peuvent maintenant cliquer à travers plutôt que d'avoir à copier / coller ou sélectionner / goto
kͩeͣmͮpͥ ͩ
7
Lien ne fonctionne pas
MüllerDK
2
Vous pouvez accéder aux articles avec ce lien: pattersonc.com/blog/2009/04
Andy White
Est-ce que l'utilisation de MYSQL avec EF s'est améliorée ou s'il y a encore des problèmes? Si le serveur SQL est préférable, quelqu'un peut-il déterminer exactement pourquoi le serveur SQL est préférable simplement parce que c'est le même fournisseur Microsoft?
user3508811
7

Il ne s'agit pas de SEP et de ce qu'ils veulent. Ils ont créé un * système ouvert pour que d'autres puissent brancher des `` fournisseurs '' - postgres et sqlite l'ont - mysql est juste en retard ... mais, bonne nouvelle pour les personnes intéressées, je le cherchais aussi et j'ai découvert que le connecteur MySql / Net 6.0 l'aura ... vous pouvez le vérifier ici:

http://www.upfromthesky.com/blog/post/2009/03/24/MySql-Supports-the-Entity-Framework.aspx


la source
1
Je me demande ce que "initial" signifie quand ils ont dit "Prise en charge initiale de l'entité Framework".
vintana
5

Vous auriez besoin d'un fournisseur de cartographie pour MySQL. C'est une chose supplémentaire dont Entity Framework a besoin pour que la magie opère. Ce blog parle d'autres fournisseurs de cartographie en plus de celui que Microsoft fournit. Je n'ai trouvé aucune mention de MySQL.

Lars Truijens
la source
Oui vous avez raison. J'espérais qu'il y avait quelque chose de prêt en ce moment.
vintana
2

Vintana,

Bien sûr, il y a quelque chose de prêt maintenant. http://www.devart.com/products.html - c'est commercial cependant (vous avez un essai IIRC de 30 jours). Ils font vivre les fournisseurs d'écriture, donc je suppose que cela devrait être rapide et stable. Je connais de très grandes entreprises utilisant leur fournisseur Oracle au lieu d'Orace et de MS.

aaimnr
la source
Merci pour votre réponse. @Vintana, vous pouvez trouver plus d'informations sur dotConnect for MySQL et ses avantages ici devart.com/dotconnect/mysql . Pour améliorer votre travail avec les entités Entity Framework, nous fournissons un outil avancé pour la création de modèles visuels - Entity Developer devart.com/entitydeveloper .
Devart
1

Soyez prudent en utilisant le connecteur .net, le connecteur 6.6.5 a un bogue, il ne fonctionne pas pour insérer des valeurs tinyint comme identité, par exemple:

create table person(
    Id tinyint unsigned primary key auto_increment,
    Name varchar(30)
);

si vous essayez d'insérer un objet comme celui-ci:

Person p;
p = new Person();
p.Name = 'Oware'
context.Person.Add(p);
context.SaveChanges();

Vous obtiendrez une exception de référence nulle:

Referencia a objeto no establecida como instancia de un objeto.:
   en MySql.Data.Entity.ListFragment.WriteSql(StringBuilder sql)
   en MySql.Data.Entity.SelectStatement.WriteSql(StringBuilder sql)
   en MySql.Data.Entity.InsertStatement.WriteSql(StringBuilder sql)
   en MySql.Data.Entity.SqlFragment.ToString()
   en MySql.Data.Entity.InsertGenerator.GenerateSQL(DbCommandTree tree)
   en MySql.Data.MySqlClient.MySqlProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree)
   en System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree)
   en System.Data.Common.DbProviderServices.CreateCommand(DbCommandTree commandTree)
   en System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree)
   en System.Data.Mapping.Update.Internal.DynamicUpdateCommand.CreateCommand(UpdateTranslator translator, Dictionary`2 identifierValues)
   en System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
   en System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
   en System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
   en System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
   en System.Data.Entity.Internal.InternalContext.SaveChanges()
   en System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
   en System.Data.Entity.DbContext.SaveChanges()

Jusqu'à présent, je n'ai pas trouvé de solution, j'ai dû changer mon identité tinyint en identité int non signée, cela a résolu le problème mais ce n'est pas la bonne solution.

Si vous utilisez une ancienne version de Connector.net (j'ai utilisé 6.4.4), vous n'aurez pas ce problème.

Si quelqu'un connaît la solution, veuillez me contacter.

À votre santé!

Oware

oware
la source
L'erreur est levée car p est nul. Vous devez d'abord créer une nouvelle instance vide de l'objet. Ie personne p = nouvelle personne (); pas la personne p; Donc:Person p = new Person(){Name = "Oware"}; context.Person.Add(p); context.SaveChanges();
Dave
désolé d'avoir oublié d'ajouter la nouvelle ligne, même si j'ajoute la nouvelle ligne, l'erreur
persiste
Le bug est corrigé dans la version 6.8.2. bugs.mysql.com/bug.php?id=70888 Connector / Net 6.8.3 est disponible. dev.mysql.com/downloads/connector/net
Der_Meister
0

Si vous souhaitez exécuter Entity Framework avec MySql sur mono / linux / macos, cela pourrait être utile https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on-mac-os/

Igor Yalovoy
la source
Est-ce que l'utilisation de MYSQL avec EF s'est améliorée ou s'il y a encore des problèmes? Si le serveur SQL est préférable, quelqu'un peut-il déterminer exactement pourquoi le serveur SQL est préférable simplement parce que c'est le même fournisseur Microsoft?
user3508811
Je ne sais pas comment c'est en ce moment, mais nous avons eu une assez mauvaise expérience en raison du manque de fonctionnalités et de son incohérence globale. MS MSQL est certainement préférable, car Microsoft place sa propre pile en premier.
Igor Yalovoy