it-swarm-pt.tech

Usando o MySQL com o Entity Framework

Não consigo encontrar nada de relevante sobre o Entity Framework/MySQL no Google, então espero que alguém saiba disso.

266
vintana

Foi lançado - Obtenha o conector MySQL para .Net v6.5 - isso tem suporte para [Entity Framework]

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 do banco de dados. Também possui integração básica do Visual Studio.

UPDATEhttp://dev.mysql.com/downloads/connector/net/ Iniciando Com a versão 6.7, o Connector/Net não incluirá mais a integração do MySQL for Visual Studio. Essa funcionalidade está agora disponível em um produto separado chamado MySQL para Visual Studio disponível usando o MySQL Installer para Windows (veja http://dev.mysql.com/tech-resources/articles/mysql-installer- for-windows.html ).

191
Vin
22
pattersonc

O MySQL está hospedando um webinar sobre a EF em alguns dias ... Veja aqui: http://www.mysql.com/news-and-events/web-seminars/display-204.html

edit: Esse webinar agora está em http://www.mysql.com/news-and-events/on-demand-webinars /display-od-204.html

10
Sir Code-A-Lot

Isso não é sobre MS e o que eles querem. Eles criaram um * sistema aberto para outros plug-ins 'provedores' - postgres e sqlite tê-lo - mysql é apenas laggin ... mas, boas notícias para os interessados, eu também estava procurando por isso e descobri que o MySql Connector/Net 6.0 terá isso ... você pode conferir aqui:

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

7
bbqchickenrobot

Você precisaria de um provedor de mapeamento para o MySQL. Isso é uma coisa extra que o Entity Framework precisa para fazer a mágica acontecer. Este blog fala sobre outros provedores de mapeamento além do que a Microsoft está fornecendo. Eu não encontrei nenhuma menção ao MySQL.

5
Lars Truijens

Vintana,

Claro que há algo pronto agora. http://www.devart.com/products.html - é comercial embora (você tem um teste de 30 dias IIRC). Eles ganham a vida escrevendo provedores, então eu acho que deveria ser rápido e estável. Eu conheço empresas realmente grandes usando seu provedor Oracle em vez de Orace e MS.

2
aaimnr

Este tutorial do MySQL mostra como gerar e usar entidades do EF como fonte de dados para um controle.

1
Kasey Speakman

Tenha cuidado ao usar o conector .net, o conector 6.6.5 tem um bug, ele não está funcionando para inserir valores tinyint como identidade, por exemplo:

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

se você tentar inserir um objeto como este:

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

Você receberá uma exceçã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 eu não encontrei uma solução, eu tive que mudar minha identidade tinyint para identidade int não assinada, isso resolveu o problema, mas esta não é a solução correta.

Se você usar uma versão mais antiga do Connector.net (usei 6.4.4), você não terá esse problema.

Se alguém souber sobre a solução, entre em contato comigo.

Felicidades!

Oware

1
oware

Você também pode procurar em https://www.devart.com/dotconnect/mysql/

O conector do DevArt suporta o EF e o MySQL.

1
scotru

Eu não vi o link aqui, mas há um beta Connector .NET para MySql. Clique em "Versões de desenvolvimento" para baixar o 6.3.2 beta, que possui a integração EF4/VS2010:

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

0
Brian Frantz

Se você estiver interessado em executar o Entity Framework com o MySql em mono/linux/macos, isso pode ser útil https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on- mac-os /

0
Igor Yalovoy