2008-09-16 19 views
253

No se puede encontrar nada relevante sobre Entity Framework/MySQL en Google, así que espero que alguien lo sepa.Uso de MySQL con Entity Framework

+8

francamente hablando, el soporte de MySQL para LINQ es una porquería! Me estoy golpeando la cabeza con problemas menores durante la última semana: | ... – effkay

+1

usaste dblinq http://code.google.com/p/dblinq2007/? – Sharique

Respuesta

4

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

+0

Sí, tienes razón. Esperaba que haya algo listo en este momento. – vintana

7

Esto no es acerca de la EM y lo que querer. 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 tendrá que ... se puede comprobar que funciona 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 inicial del marco de la entidad". – vintana

187

Se ha liberado - Obtener la MySQL connector for .Net v6.5 - esto tiene soporte para [Marco de la entidad]

que estaba esperando esta todo el tiempo, aunque el apoyo es básico, que 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/ partir de la versión 6.7, conector/Net ya no incluirá el MySQL para la integración de 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).

+0

Gracias por la actualización, ¡estaba esperando lo mismo! –

+0

¡Gracias por la información! – Rich

+4

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

2

Vintana,

De Por supuesto que hay algo listo ahora. http://www.devart.com/products.html - es comercial aunque (tienes un Trial 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.

+0

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

1

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

+3

El enlace está roto, el tutorial se puede encontrar [aquí] (http://dev.mysql.com/doc/refman/5.6/en/connector-net-tutorials-entity-framework-winform-data-source.html) . –

+0

Movido [nuevamente] (https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-entity-framework-winform-data-source.html). –

1

Tenga cuidado al usar el conector .net, el conector 6.6.5 tienen un error, que no está funcionando para insertar valores TINYINT como la identidad, por ejemplo:

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

si se intenta insertar un objeto como éste:

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

obtendrá una excepción de referencia null :

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, que tenía que cambiar mi identidad tinyint a la identidad unsigned int, esto solucionó 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!

Wari

+0

Se produce el error porque p es nulo. Primero tiene que crear una nueva instancia vacía del objeto. Es decir Persona p = persona nueva(); no Persona p; So: 'Persona p = new Person() {Name =" Oware "}; context.Person.Add (p); context.SaveChanges(); ' – Dave

+0

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

+0

El error se corrigió en la versión 6.8.2. http://bugs.mysql.com/bug.php?id=70888 Se ha lanzado Connector/Net 6.8.3. http://dev.mysql.com/downloads/connector/net/ –

0

Si usted interesado en el funcionamiento de 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/

+0

¿Está mejorando el uso de MYSQL con EF o aún hay problemas? Si el servidor SQL es preferible, ¿alguien puede determinar exactamente por qué el servidor SQL es preferible solo porque es el mismo proveedor de Microsoft? – user3508811

+0

No estoy seguro de cómo es en este momento, pero tuvimos una experiencia bastante mala debido a la falta de características y es en general inconsistente. MS MSQL es definitivamente preferible, porque Microsoft pone su propia pila primero. –