Ho cercato di far funzionare Linq con Mysql su Ubuntu, usando la versione Mono nei repository (2.10.5) e non ricevo altro che mal di testa.Fare in modo che Linq giochi bene con Mysql e Mono, è possibile?
Prima di tutto, ho dovuto modificare il provider MySQL sqlmetal.exe.config perché era impostato su una versione obsoleta e obsoleta per impostazione predefinita, sono riuscito a farlo funzionare impostando il connettore MySQL che ho installato su questa macchina (dai repository) come provider per sqlmetal. Ho generato il DataContext con sqlmetal per il mio database di destinazione, e sembrava funzionare, ma non ne sono completamente sicuro.
Dopo aver generato il DataContext ho creato un nuovo progetto sul MonoDevelop solo per testare questo, in un primo momento ho provato ad utilizzare un semplice MysqlConenction e controllare il connettore funzionava correttamente, ho dovuto addd il gruppo connettore per il progetto, ma va bene , ha funzionato. poi ho cercato di connettersi utilizzando il DataContext utilizzando questo codice:
using System;
using System.Linq;
using System.Data.Linq;
using MySql.Data.MySqlClient;
namespace test
{
public class test
{
public static void Main (String[] args)
{
Test db = new Test (new MySqlConnection("Userid=root;database=test;server=localhost;password=password"));
foreach(var tr in db.Users)
{
Console.Write(tr.Username);
}
}
}
}
Questo codice fallisce. Sembra Linq è la generazione di codice SQL male per MySQL, almeno l'eccezione è gettando sembra dire che:
Unhandled Exception: MySql.Data.MySqlClient.MySqlException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Id], [Password], [Username]
FROM [test].[Users]' at line 1
at MySql.Data.MySqlClient.MySqlStream.ReadPacket() [0x00000] in <filename unknown>:0
at MySql.Data.MySqlClient.NativeDriver.GetResult (System.Int32& affectedRow, System.Int32& insertedId) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: MySql.Data.MySqlClient.MySqlException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Id], [Password], [Username]
FROM [test].[Users]' at line 1
at MySql.Data.MySqlClient.MySqlStream.ReadPacket() [0x00000] in <filename unknown>:0
at MySql.Data.MySqlClient.NativeDriver.GetResult (System.Int32& affectedRow, System.Int32& insertedId) [0x00000] in <filename unknown>:0
qualcuno sa se è possibile connettersi a MySQL utilizzando Linq e Mono? C'è qualcosa che mi manca?
Grazie!
Questa questione è stata già discusso qui http://stackoverflow.com/questions/42212/how-can-i-use-linq-with-a-mysql-database-on-mono – Eugene
ho letto questa domanda , ma è una domanda di 3 anni e ho pensato che le cose sarebbero cambiate ... – uorbe001