web-dev-qa-db-fra.com

Utiliser MySQL avec Entity Framework

Vous ne trouvez rien de pertinent concernant Entity Framework/MySQL sur Google, j'espère que quelqu'un le saura.

268
vintana

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

J'attendais cela depuis le début, bien que le support soit basique, fonctionne pour la plupart des scénarios basiques d'interaction avec la base de données. Il a également une intégration de base à Visual Studio.

UPDATEhttp://dev.mysql.com/downloads/connector/net/ À partir de la version 6.7, Connector/Net n'inclura plus l'intégration de MySQL pour Visual Studio. Cette fonctionnalité est désormais 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 ).

192
Vin
22
pattersonc

MySQL organise un webinaire sur EF dans quelques jours ... Regardez ici: http://www.mysql.com/news-and-events/web-seminars/display-204.html

modifier: Ce webinaire se trouve maintenant à http://www.mysql.com/news-and-events/on-demand-webinars /display-od-204.html

10
Sir Code-A-Lot

Ce n'est pas à propos de MS et de ce qu'ils veulent. Ils ont créé un * système ouvert pour les autres fournisseurs de plug-in - Postgres et sqlite l'ont - mysql est juste laggin .../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

7
bbqchickenrobot

Vous auriez besoin d'un fournisseur de mappage 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 que celui fourni par Microsoft. Je n'ai trouvé aucune mention de MySQL.

5
Lars Truijens

Vintana,

Bien sûr, quelque chose est prêt maintenant. http://www.devart.com/products.html - c'est commercial bien que (vous avez un essai de 30 jours IIRC). Ils gagnent leur vie en rédacteurs, donc je suppose que cela devrait être rapide et stable. Je connais de très grandes entreprises qui utilisent leur fournisseur Oracle au lieu d’Orace et de MS.

2
aaimnr

Ce tutoriel MySQL montre comment générer et utiliser des entités EF comme source de données pour un contrôle.

1
Kasey Speakman

Faites attention en utilisant le connecteur .net, le connecteur 6.6.5 a un bogue, il ne fonctionne pas pour insérer des valeurs tinyint en tant qu'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'avais pas trouvé de solution, je devais changer mon identité tinyint en identité non signée int, cela résout le problème, mais ce n'est pas la bonne solution.

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

Si quelqu'un connaît la solution, contactez-moi s'il vous plaît.

À votre santé!

Oware

1
oware

Vous pouvez également regarder https://www.devart.com/dotconnect/mysql/

Le connecteur de DevArt prend en charge EF et MySQL.

1
scotru

Je n'ai pas vu le lien ici, mais il existe une version bêta du .NET Connector for MySql. Cliquez sur "Development Releases" pour télécharger la version 6.3.2 bêta, dotée de l'intégration EF4/VS2010:

http://dev.mysql.com/downloads/connector/net/5.0.html#downloads

0
Brian Frantz

Si vous êtes intéressé par l'exécution d'Entity Framework avec MySql sur mono/linux/macos, cela peut être utile https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with -mysql-on-mac-os/

0
Igor Yalovoy