Question

Je tester DBLinq-0,18 et DBLinq de SVN Trunk avec MySQL et Postgresql. Je suis seulement en utilisant une requête très simple mais à la fois sur la base de données DBLinq ne génère pas une clause Where. Je l'ai confirmé en tournant la consignation de déclaration sur Postgresql pour vérifier exactement ce que demande DBLinq envoie.

Ma requête Linq est:

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 requête fonctionne bien, mais le SQL généré par DBLinq est de la forme:

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

Il n'y a pas de clause WHERE qui signifie DBLinq doit être tirant vers le bas toute la table avant d'exécuter la requête Linq.

Quelqu'un at-il eu une expérience avec DBLinq et de savoir ce que je pourrais faire mal?

Était-ce utile?

La solution

J'ai trouvé le problème et il n'y a rien à voir avec DBLinq.

J'avais testé quelques trucs à partir IronRuby et dans qu'il existe un ensemble appelé Microsoft.Scripting.Core qui double l'espace de noms System.Data.Linq (pourquoi il fait que je ne sais pas).

Avec une référence à l'ensemble Microsoft.Scripting.Core mon test app DBLinq serait compiler et exécuter très bien, mais aurait la clause where manquante sur le SQL. Retrait de la référence d'assemblage conduit à la clause where étant généré correctement.

Autres conseils

J'éviter d'utiliser DBLinq pour le code de production ... beaucoup de LINQ to SQL fonctionnalités de ne sont pas mises en œuvre, et la marche à travers le code source montre un faible niveau de maturité ... la plupart des méthodes ne sont pas mises en œuvre ou marqué comme « non terminé ».

... vous avez été averti!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top