Angesichts dieses einfachen Modells:
%Vor%Und diese einfache Abfrage: (userID ist ein int)
%Vor%Die folgende Abfrage wird generiert:
%Vor%Warum wird dieses AND NOT NULL-Kriterium hinzugefügt? Die Datenbank lässt Nullen in diesem Feld nicht zu und ein Int darf in .net nicht null sein.
Dies passiert überall in meinen Abfragen. Es ist ziemlich nervig, aber beeinflusst es die Leistung?
Wie kann ich es loswerden?
Dies ist auf einem Datenbank-First-Modell.
Natürlich würde es den Scheck machen. Denken Sie darüber nach, wie Entity Framework die Abfrage aus Ihrer LINQ-Anweisung erstellen muss. Es verwendet eine Menge Reflektion (wie in diese SO Frage ) um die Arbeit zu erledigen. Daher bedeutet die Verwendung von Reflektion, dass Sie wahrscheinlich nicht die Zeit damit verbringen, darüber nachzudenken, welchen Typ ein bestimmtes Feld hat oder ob es nullfähig ist oder nicht - vor allem, weil es einfach die Null-Überprüfung hinzufügen und mit der Abfrage erledigt werden kann.
Meine Vermutung ist, dass dies mit Absicht gemacht wurde, da Reflektionen verwendet werden können, um den Typ zu erfassen und dann zu prüfen, ob es NULL-Werte gibt oder nicht viele Parameter). Es ist vielleicht nicht notwendig, aber ich denke, es macht die Dinge viel einfacher für den täglichen Gebrauch.
Tags und Links .net c# entity-framework entity-framework-6