Usar o MySQL com a plataforma de entidades
11 answers
Foi lançado-obter o conector MySQL para. Net v6. 5 - Isto tem suporte para [Quadro Da Entidade]
Eu estava esperando por isso o tempo todo, embora o suporte seja básico, funciona para a maioria dos cenários básicos de interação db. Ele também tem a integração Visual Básica do estúdio.Actualizar http://dev.mysql.com/downloads/connector/net/ A partir da versão 6.7, o Connector / Net deixará de incluir o MySQL para integração Visual Studio. Que a funcionalidade está agora disponível em um produto separado chamado MySQL para o Visual Studio disponível usando o instalador MySQL para Windows (Ver http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html).
Olha o meu post sobre este assunto.
Editar: Esse webinar está agora em http://www.mysql.com/news-and-events/on-demand-webinars/display-od-204.html
Http://www.upfromthesky.com/blog/post/2009/03/24/MySql-Supports-the-Entity-Framework.aspx
Este tutorial MySQL mostra como gerar e usar as entidades da EF como fonte de dados para um controlo.
Tenha cuidado ao usar o conector. Net, O conector 6.6.5 tem um bug, ele não está trabalhando para inserir valores de tinyint como identidade, por exemplo:
create table person(
Id tinyint unsigned primary key auto_increment,
Name varchar(30)
);
Se tentar inserir um objecto como este:
Person p;
p = new Person();
p.Name = 'Oware'
context.Person.Add(p);
context.SaveChanges();
Você terá uma excepção de referência 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()
Até agora não encontrei uma solução, tive de mudar a minha identidade tinyint Para Identidade int não assinada, isto resolveu o problema, mas esta não é a solução certa.
Se utilizar uma versão mais antiga de Connector.net Não vais ter este problema.
Se alguém souber da solução, por favor contacte-me. Saúde!Auware
Também podes olhar para https://www.devart.com/dotconnect/mysql/
O conector do DevArt suporta EF e MySQL.Http://dev.mysql.com/downloads/connector/net/5.0.html#downloads
Se estiver interessado em executar a plataforma de Entidades com o MySql no mono / linux / macos, isto poderá ser útil https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on-mac-os/