Frage

Ich teste aus DbLinq-0,18 und DbLinq von SVN Trunk mit MySQL und PostgreSQL. Ich verwende nur eine sehr einfache Abfrage aber auf beide Datenbank DbLinq ist nicht eine Where-Klausel zu erzeugen. Ich habe dies bestätigt, indem Sie auf Postgresql auf Anweisung Protokollierung drehen, genau zu überprüfen, was anfordern DbLinq sendet.

Meine Linq Abfrage ist:

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;

Die Abfrage funktioniert ok, aber das SQL von DbLinq erzeugt ist von der Form:

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

Es gibt keine Where-Klausel, was bedeutet, DbLinq muss die gesamte Tabelle wird nach unten ziehen, bevor der Linq-Abfrage ausgeführt wird.

Hat jemand Erfahrung mit DbLinq hatte und weiß, was ich falsch machen könnte?

War es hilfreich?

Lösung

fand ich das Problem, und es ist nichts mit DbLinq zu tun.

Ich hatte ein paar Sachen aus IronRuby testet und innerhalb, dass es eine Anordnung Microsoft.Scripting.Core genannt ist, die den System.Data.Linq Namespace dupliziert (warum es das tut, weiß ich nicht).

Mit einem Verweis auf die Microsoft.Scripting.Core Montage meinem Test DbLinq app kompilieren würde und laufen gut, aber hätte die where-Klausel auf dem SQL fehlt. die Anordnung Bezug ergab die Entfernungs where-Klausel korrekt erzeugt werden.

Andere Tipps

ich vermeiden würde DbLinq für die Produktion Code ... viele von Linq-To-SQL-Funktionen nicht implementiert sind, und durch den Quellcode zu Fuß zeigt eine zureichende Reife ... sind viele der Verfahren nicht umgesetzt oder markiert als „ungekündigten“.

... Sie sind gewarnt worden!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top