Domanda

Sono testare DBLinq-0,18 e DBLinq da SVN Tronco con MySQL e PostgreSQL. Sto usando solo un semplice query, ma sulla base di dati sia DBLinq non sta generando una clausola WHERE. Ho confermato questo accendendo la registrazione dichiarazione su PostgreSQL per controllare esattamente ciò richiesta DBLinq sta inviando.

La mia query LINQ è:

MyDB db = new MyDB(new NpgsqlConnection("Database=database;Host=localhost;User Id=postgres;Password=password"));

var customers = from customer in db.Customers
                where customer.CustomerUserName == "test"
                select customer;

La query funziona bene, ma il codice SQL generato da DBLinq è della forma:

select customerusername, customerpassword .... from public.customers

Non c'è clausola Where che significa DBLinq deve essere tirando l'intera tabella in basso prima di eseguire la query LINQ.

Qualcuno ha avuto esperienza con DBLinq e sapere che cosa potrei fare male?

È stato utile?

Soluzione

Ho trovato il problema e non è niente a che fare con DBLinq.

che avevo testato alcune cose fuori dal IronRuby e dentro che ci sia un gruppo chiamato Microsoft.Scripting.Core che duplica lo spazio dei nomi System.Data.Linq (perché lo fa che io non lo so).

Con un riferimento all'assembly Microsoft.Scripting.Core mia prova DBLinq applicazione sarebbe compilare ed eseguire bene, ma avrebbe la clausola WHERE mancante in SQL. Rimozione del riferimento assembly provocato la clausola where correttamente generato.

Altri suggerimenti

Eviterei usando DBLinq per codice di produzione ... molti di LINQ to SQL funzioni di non sono implementati, e camminare attraverso il codice sorgente mostra un basso livello di maturità ... molti dei metodi non sono implementati o contrassegnati come "terminato".

... siete stati avvertiti!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top