So habe ich eine sehr einfache Abfrage (gegen eine einzige Tabelle), die eine andere Ergebnismenge zurückgibt, wenn von Entity Framework ausgeführt wird, wenn es direkt ausgeführt wird SQL Server-Verwaltungsstudio. Zuerst dachte ich, dass EF verschiedene SQL-Versionen erzeugt, aber nachdem es zu einer direkten SQL-Abfrage umgeschrieben wurde, gibt es immer noch ein anderes Ergebnis zurück.Entity Framework 5.0 Query-Ergebnisse unterscheiden sich von einer direkten SQL-Abfrage in der Datenbank
Arbeits Abfrage:
SELECT *
FROM Users
WHERE IsActive = 1
AND IsAdvisor = 1
ORDER BY Initials
Failing Code:
//var query = this.BaseDB.Users.Where(x => x.IsAdvisor && x.IsActive).OrderBy(x => x.Initials);
var query = this.BaseDB.Users.SqlQuery("SELECT * FROM Users WHERE Users.IsActive = 1 AND Users.IsAdvisor = 1 ORDER BY Initials");
return query.ToList(); //this query (either variant, returns the same result set, but is missing values.
Jede Idee, was geschieht? Übrigens habe ich noch einmal überprüft, ob ich dieselbe DB abgefragt habe.
AFAIR EF berührt die Abfrage nicht, wenn Sie SqlQuery verwenden, so dass es das gleiche Ergebnis liefern sollte Wenn es nicht sicherstellt, dass Sie sich mit der gleichen Datenbank verbinden – Pawel
Sind eines der Felder IsActive oder IsAdvisor boolesch? – WillC
Wenn 'IsAdvisor' und' IsActive' eine Ganzzahl in der Datenbank ist, dann kann 'x.IsAdvisor'' Wenn sie Integer sind, überprüfe einfach den int-Wert in der Abfrage, 'var query = this.BaseDB.Users.Where (x => (x.IsActive == 1) && (x.IsAdvisor == 1)). OrderBy (x => x.Initials) .ToList(); ' – Ingenioushax