Não consigo encontrar nada relevante sobre o Entity Framework / MySQL no Google, então espero que alguém saiba disso.
Não consigo encontrar nada relevante sobre o Entity Framework / MySQL no Google, então espero que alguém saiba disso.
Respostas:
Foi lançado - Obtenha o conector do 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, funcione para os cenários mais básicos de interação com o banco de dados. Ele também possui integração básica do Visual Studio.
ATUALIZAÇÃO http://dev.mysql.com/downloads/connector/net/ A partir da versão 6.7, o Connector / Net não incluirá mais a integração do MySQL para Visual Studio. Agora, essa funcionalidade está disponível em um produto separado chamado MySQL para Visual Studio, disponível no MySQL Installer para Windows (consulte http://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html ).
Confira meu post sobre esse assunto.
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
editar: esse webinar agora está em http://www.mysql.com/news-and-events/on-demand-webinars/display-od-204.html
Não se trata de MS e o que eles querem. Eles criaram um * sistema aberto para outros plugarem 'provedores' - postgres e sqlite - o mysql está apenas atrasado ... mas, boas notícias para os interessados, eu também estava procurando por isso e descobri que o MySql Connector / Net 6.0 terá ... você pode conferir aqui:
http://www.upfromthesky.com/blog/post/2009/03/24/MySql-Supports-the-Entity-Framework.aspx
Você precisaria de um provedor de mapeamento para MySQL. Isso é algo 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. Não encontrei nenhuma menção ao MySQL.
Vintana,
Od curso, há algo pronto agora. http://www.devart.com/products.html - embora seja comercial (você tem um teste de 30 dias IIRC). Eles ganham a vida escrevendo fornecedores, então acho que deve ser rápido e estável. Conheço grandes empresas que usam seu provedor Oracle em vez de Orace e MS.
Cuidado ao usar o conector .net, o Connector 6.6.5 possui um erro, 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 não encontrei uma solução, tive que mudar minha identidade tinyint para identidade int sem sinal, isso resolveu o problema, mas essa não é a solução certa.
Se você usa uma versão mais antiga do Connector.net (usei 6.4.4), não terá esse problema.
Se alguém souber da solução, entre em contato comigo.
Felicidades!
Oware
Person p = new Person(){Name = "Oware"}; context.Person.Add(p); context.SaveChanges();
Você também pode consultar https://www.devart.com/dotconnect/mysql/
O conector do DevArt suporta EF e MySQL.
Não vi o link aqui, mas há um beta .NET Connector for MySql. Clique em "Versões de Desenvolvimento" para fazer o download da versão 6.3.2 beta, que possui integração EF4 / VS2010:
http://dev.mysql.com/downloads/connector/net/5.0.html#downloads
Se você estiver interessado em executar o Entity Framework com MySql no mono / linux / macos, isso pode ser útil https://iyalovoi.wordpress.com/2015/04/06/entity-framework-with-mysql-on-mac-os/