Pergunta

Existem inúmeras bibliotecas que fornecem recursos Linq para código C# interagindo com um banco de dados MySql.Qual deles é o mais estável e utilizável no Mono?

Antecedentes (principalmente irrelevantes):Eu tenho um programa simples em C# (.Net 2.0) atualizando valores em um banco de dados MySql.Ele é executado todas as noites por meio de um cron job e roda em um Pentium 3 450Mhz, Linux + Mono.Quero reescrevê-lo usando Linq (.Net 3.5) principalmente como um exercício (ainda não usei o Linq).

Foi útil?

Solução

O único provedor linq (gratuito) para MySql é DBLinq, e acredito que ainda esteja muito longe de estar pronto para produção.

Há também MyDirect.Net que é comercial, mas ouvi críticas mistas sobre sua capacidade.

Eu li que o MySql implementará a API Linq to Entities para a versão 5.3 do conector .net, mas não sei se existe um cronograma para isso.Na verdade, o MySql manteve silêncio total sobre o suporte ao Entity Framework por meses.


Termo aditivo:A versão mais recente do MySql Connector/Net 6.0 tem suporte para EF de acordo com as notas de versão.Não tenho ideia de quão estável/útil isso é, então adoraria ouvir de alguém que já experimentou.

Outras dicas

De acordo com Roteiro mono Não tenho certeza se o Linq está disponível para mono?

Pelo menos parte do Linq pode estar disponível na versão mais recente, mas Linq to DB está listado para Mono 2.4 (fevereiro de 2009)

Não tenho certeza sobre o Mono, mas comecei a usar Velocidade da luz e que suporta LINQ-to-MySQL.

neste momento você não pode usar o linq to sql, você pode procurar um provedor linq mysql de terceiros ou linq para entidades.linq to sql funciona apenas para bancos de dados do SQL Server.

LINQ to SQL é simplesmente uma camada ORM que aproveita o poder das expressões para facilitar a construção de consultas em seu código.

Se você está apenas chamando consultas ad hoc para sua ferramenta, há pouca necessidade de usar LINQ, apenas adiciona uma camada extra de abstração ao seu código.

Eu tentei o tutorial em http://www.primaryobjects.com/CMS/Article100.aspx.Isso usa dblinq/dbmetal para gerar a classe de contexto de dados e as classes para cada tabela.

O código falhou na primeira tentativa com uma exceção não tratada (MySql.Data.Types.MySqlConversionException:Não é possível converter o valor de data/hora do MySQL para System.DateTime").O Google revelou que isso deve ser facilmente resolvido anexando "permitir zero dateTime = true;" para a string de conexão.Infelizmente, isso acabou não resolvendo meu problema.Pensando que a culpa era do MySQL .Net Connector, executei o SQL gerado pelo dblinq sem a camada intermediária linq2sql usando o MySQL Connector.Desta vez nenhuma exceção ocorreu.Tabelas que não possuem coluna de data funcionaram com DbLinq.Portanto, pela minha experiência, concordo com Adam, o DbLinq está muito longe de estar pronto para produção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top