Uso de MySQL con Entity Framework [cerrado]


269

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


8
francamente, ¡el soporte mysql para LINQ es una mierda! Me estoy golpeando la cabeza con problemas menores durante la última semana: | ...
effkay

Respuestas:


193

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

Estuve esperando esto todo el tiempo, aunque el soporte es básico, funciona para la mayoría de los escenarios básicos de 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á MySQL para la integración de Visual Studio. Esa funcionalidad ahora está disponible en un producto separado llamado MySQL para Visual Studio disponible utilizando el instalador MySQL para Windows (consulte http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html ).


44
Pensé en mencionar que la última versión está disponible aquí (actual 6.2.2): mysql.com/downloads/connector/net
Brett Ryan

3
¿Esto es compatible con EF4 y VS2010? Instalé el conector e intenté agregar una nueva conexión en VS2010 pero MySQL no aparece en la lista de proveedores
Abhijeet Patel,

1
Tengo curiosidad sobre MySQL, EF4 y VS2010.
Vinicius Rocha

1
Debería si tienes el último conector. Acabo de mover mi producto a .NET4 específicamente debido al soporte de Entidad MySQL. Las herramientas y todo funciona bien, pero el gran problema es el soporte subyacente que proporciona para las consultas reales. Hay bastantes problemas con las expresiones de lamba que no se encuentran con MSSQL
David Anderson

1
Por supuesto, están saliendo nuevas versiones. Ahora apoyo EF5, versión 6.7.4: dev.mysql.com/downloads/connector/net/#downloads Además, dado que esta versión, el plugin de VS con el servidor MySQL y otras herramientas que se incluyen se incluye en un solo paquete: dev.mysql.com / tech-resources / articles / ...
Nullius

22

Arreglé la codificación de ese enlace: los usuarios ahora pueden hacer clic directamente en lugar de tener que copiar / pegar o seleccionar / goto
kͩeͣmͮpͥ ͩ

77
Link no funciona
MüllerDK

2
Puede acceder a los artículos con este enlace: pattersonc.com/blog/2009/04
Andy White

¿Está mejorando el uso de MYSQL con EF o aún existen problemas?
user3508811


7

No se trata de la EM y de lo que quieren. Han creado un * sistema abierto para que otros conecten 'proveedores': Postgres y sqlite lo tienen: mysql es solo un retraso ... pero, buenas noticias para los interesados, yo también estaba buscando esto y descubrí 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


1
Me pregunto qué significa "inicial" cuando dijeron "Soporte de Entity Framework inicial".
vintana

5

Necesitaría un proveedor de mapeo para MySQL. Eso es algo adicional que Entity Framework necesita para que la magia suceda. Este blog habla sobre otros proveedores de mapeo además del que está suministrando Microsoft. No he encontrado ninguna mención de MySQL.


Si, tienes razón. Esperaba que haya algo listo en este momento.
vintana

2

Vintana

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


Gracias por su respuesta. @Vintana, puede encontrar más información sobre dotConnect para MySQL y sus ventajas aquí devart.com/dotconnect/mysql . Para mejorar su trabajo con las entidades de Entity Framework, proporcionamos una herramienta avanzada para la creación de modelos visuales: Entity Developer devart.com/entitydeveloper .
Devartir el

1

Tenga cuidado al usar el conector .net, el conector 6.6.5 tiene un error, no funciona para insertar valores de 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 utiliza una versión anterior de Connector.net (utilicé 6.4.4) no tendrá este problema.

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

¡Salud!

Oware


El error se produce porque p es nulo. Primero debe crear una nueva instancia vacía del objeto. Es decir, Persona p = nueva Persona (); no persona p; Entonces:Person p = new Person(){Name = "Oware"}; context.Person.Add(p); context.SaveChanges();
Dave

lo siento, olvidé agregar la nueva línea, incluso si agrego la nueva línea, el error sigue apareciendo
oware

El error se corrigió en la versión 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 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/


¿Está mejorando el uso de MYSQL con EF o aún existen problemas?
user3508811

No estoy seguro de cómo es en este momento, pero tuvimos una experiencia bastante mala debido a la falta de características y que en general es inconsistente. MS MSQL es definitivamente preferible, porque Microsoft pone su propia pila primero.
Igor Yalovoy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.