2016-07-12 14 views
2

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.

+1

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

+0

Sind eines der Felder IsActive oder IsAdvisor boolesch? – WillC

+0

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

Antwort

0

Erstens, danke für die Antworten. Dies war mein eigener Fehler, der vorherige Entwickler stellte die Anzeigeeigenschaft für bestimmte Datensätze einzeln ein :(, EF gab die korrekte Ergebnismenge zurück.