Usando MySQL con Entity Framework

No encuentro nada relevante sobre Entity Framework / MySQL en Google, así que espero que alguien lo sepa.

Ha sido lanzado – Obtenga el conector MySQL para .Net v6.5 – esto tiene soporte para [Entity Framework]

Estaba esperando esto todo el tiempo, aunque el soporte es básico, funciona para la mayoría de los escenarios básicos de la interacción db. También tiene integración básica de Visual Studio.

ACTUALIZACIÓN http://dev.mysql.com/downloads/connector/net/ A partir de la versión 6.7, Connector / Net ya no incluirá la integración de MySQL para Visual Studio. Esa funcionalidad ahora está disponible en un producto separado llamado MySQL for Visual Studio disponible usando el instalador de MySQL para Windows (vea http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html ).

MySQL está organizando un seminario web sobre EF en unos días … Mire aquí: http://www.mysql.com/news-and-events/web-seminars/display-204.html

editar: ese webinar está ahora en http://www.mysql.com/news-and-events/on-demand-webinars/display-od-204.html

Esto no se trata de MS y de lo que quieren. Han creado un * sistema abierto para que otros completen ‘proveedores’ – postgres y sqlite lo tienen – mysql es solo un poco … pero, buenas noticias para los interesados, yo también estaba buscando esto y encontré que el conector MySql / Net 6.0 lo tendrá … puedes consultarlo aquí:

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

Necesitarías un proveedor de mapas para MySQL. Eso es algo extra que el Marco de la Entidad necesita para hacer que la magia suceda. Este blog habla sobre otros proveedores de mapas además del que Microsoft está suministrando. No he encontrado ninguna mención de MySQL.

Vintana,

Por supuesto que hay algo listo ahora. http://www.devart.com/products.html – es comercial aunque (usted tiene un juicio IIRC de 30 días). Se ganan la vida escribiendo proveedores, así que supongo que debe ser rápido y estable. Conozco a las grandes compañías que usan su proveedor de Oracle en lugar de Orace y MS.

Este tutorial de MySQL muestra cómo generar y usar entidades EF como fuente de datos para un control.

Tenga cuidado al usar el conector .net, el conector 6.6.5 tiene un error, no funciona para insertar valores tinyint como identidad, por ejemplo:

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

si intenta insertar un objeto como este:

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

Obtendrá una excepción de referencia nula:

 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() 

Hasta ahora no he encontrado una solución, tuve que cambiar mi identidad tinyint a identidad int sin firmar, esto resolvió el problema, pero esta no es la solución correcta.

Si usa una versión anterior de Connector.net (utilicé 6.4.4), no tendrá este problema.

Si alguien conoce la solución, contácteme.

¡Aclamaciones!

Oware

También puede consultar https://www.devart.com/dotconnect/mysql/

El conector de DevArt admite EF y MySQL.

No vi el enlace aquí, pero hay un conector beta .NET para MySql. Haga clic en “Versiones de desarrollo” para descargar 6.3.2 beta, que tiene integración EF4 / VS2010:

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

Si está interesado en ejecutar Entity Framework con MySql en mono / linux / macos, esto podría ser útil https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on-mac-os/