app9bergamo.com

  

Beste Artikel:

  
Main / Entityspaces where-Klausel mit Datum

Entityspaces where-Klausel mit Datum

Tippen Sie auf Ihre T-SQL-Kenntnisse und schreiben Sie Abfragen, die tatsächlich Sinn machen. Sind Sie jemals auf LINQ-Anfragen gestoßen, die so unverständlich und komplex sind, dass Sie unter Ihren Schreibtisch kriechen und einen guten Schrei haben mussten?

Und was ist damit, dass bestimmte Spalten nicht ausgewählt werden können? Das ist 2013 Leute. Welcher Entwickler hat kein gutes Verständnis für die T-SQL-Syntax? Dies hat zwei Vorteile: Ihre Lernkurve ist minimal und das SQL-Spucken ist sehr sauber. Das folgende Beispiel zeigt einen Self-Join in der Employees-Tabelle, bei dem nach allen Mitarbeitern gesucht wird, deren Nachname ein 'a' enthält und denen Personen Bericht erstatten.

Ein bisschen albern, aber es zeigt die Syntax. Ja, Sie können tatsächlich nur die gewünschten Spalten auswählen, und SQL ist äußerst schlank.

EF benötigt nur eine einzige. NET-Assembly und keine Konfigurationseinstellungen. Ein Verweis auf "Tiraggo". Dies ist die einzige Assembly, die Ihre Anwendung zur Laufzeit zur Verwendung Ihres Tiraggo verwendet. EF-Abfrageklassen. Es gibt zwei Möglichkeiten, wie Sie Ihr Tiraggo generieren können. Wenn Sie das Tiraggo installieren. Die Vorlagen werden in Ihrem installiert Modellordner. Es gibt auch einen "TiraggoEdmx". Diese Baugruppe wird vom Tiraggo verwendet.

EF T4-Vorlagen und Sie müssen diese Baugruppe nicht versenden. Zum Beispiel die Zuordnungen zwischen Ihrem konzeptionellen Modell und dem Speichermodell, einschließlich primitiver Informationen wie SQL Server-Spaltentypen auf niedriger Ebene wie "nvarchar". Ich mache einige Verbesserungen in der Assembly und werde "TiraggoEdmx" als separates NuGet-Paket für sich veröffentlichen.

Wenn Sie zuerst Code verwenden, haben Sie keinen. EDMX-Dateien. Es gibt eine Vorlage, die Sie in My2ndGeneration ausführen können und die in Sekunden die gleichen Abfrageklassen generiert. Es ist im Tiraggo. EntityFramework-Namespaces. Sie können die Cloud- oder Desktop-Version von My2ndGeneration verwenden. SelectAllExcept ist eigentlich keine SubQuery, sondern nur eine praktische Erweiterung, mit der Sie alle außer einer oder mehreren aufgelisteten Spalten auswählen können.

Dies ist die traditionelle Art des Paging und funktioniert auf allen Versionen von SQL Server. Beim Sortieren benötigen Sie immer einen OrderBy. Beachten Sie, dass Sie, obwohl viele Abfrageobjekte verwendet werden, WithNoLock nur für das übergeordnete oder Hauptabfrageobjekt auf true setzen müssen. Das generierte SQL lautet wie folgt: Dies entspricht der obigen Abfrage, gibt jedoch alle Spalten in der Order-Tabelle zurück, anstatt nur OrderID und OrderDate. Beachten Sie, dass die Select-Klausel Bestellungen enthält, keine Bestellungen. Das erzeugte SQL verwendet den angegebenen Alias ​​o.

Manchmal möchten Sie Spalten in Ihre Ergebnismenge aufnehmen, nach denen Sie nicht gruppieren möchten. Eine Möglichkeit, dies zu erreichen, besteht darin, eine SubQuery in der From-Klausel zu verwenden, die das Aggregat so enthält, wie Sie es gruppieren möchten. Die äußere Abfrage enthält die Ergebnisse des Aggregats sowie alle zusätzlichen Spalten. Wenn Sie eine SubQuery in einer From-Klausel verwenden, müssen Sie der From-Klausel einen eigenen Alias ​​geben, der unten als "sub" angezeigt wird. Um in der äußeren Abfrage auf ein Alias-Element in der From SubQuery zu verweisen, verwenden Sie die Inline-Raw-SQL-Technik, um den Alias ​​des Aggregats mit dem From-Klausel-Alias ​​zu qualifizieren, d.h.

Im Folgenden wird eine Ergebnismenge erstellt, die Gebiete enthält, denen ein Mitarbeiter nicht zugeordnet ist. SubQueries können nicht direkt in einer Join SubQuery-Klausel verwendet werden, sie können jedoch in einer Join-Abfrage verwendet werden. On SubQuery-Klausel. In einer korrelierten Unterabfrage stützt sich die innere Abfrage auf ein Element der äußeren Abfrage. Die innere Auswahl kann nicht alleine ausgeführt werden. Unten verwendet die innere pq-Abfrage den oiq der äußeren Abfrage.

ProductID in der Where-Klausel. Tiraggo unterstützt das Verschachteln von SubQueries. Jeder Datenbankanbieter hat seine eigenen Grenzen, wie tief die Verschachtelung gehen kann. Tiraggo unterstützt zwei verschiedene Syntaxansätze für verschachtelte SubQueries.

Das Verschachteln nach dem Namen der Abfrageinstanz kann einfacher zu verstehen und zu konstruieren sein, wenn Sie bei Null anfangen und kein bereits vorhandenes SQL zur Verfügung haben. Der Trick besteht darin, mit der innersten SubQuery zu beginnen und sich herauszuarbeiten. Die folgende Abfrage führt zu denselben Ergebnissen wie die oben beschriebene herkömmliche Abfrage im SQL-Stil. Die Instanznamen sind farbcodiert, um hervorzuheben, wie sie verschachtelt sind.

Sie stehen vor der SubQuery, für die sie sich bewerben. Durch Anwenden eines Qualifizierers auf die Unterabfrage können Sie Operatoren für Unterabfragen verwenden, die mehrere Ergebnisse zurückgeben. Unten finden Sie eine verschachtelte Unterabfrage. Nachdem Sie DynamicQuery verwendet und sich in ihn verliebt haben, möchten Sie als letztes anhalten und eine gespeicherte Prozedur schreiben oder eine Ansicht erstellen.

Wir haben die Rohinjektionsfunktion in unserer Select-Anweisung immer unterstützt, sie wird jedoch bald fast überall verfügbar sein. Hier ist eine Beispielabfrage. In der Realität würden Sie niemals eine solche Abfrage schreiben. Dies dient nur dazu, alle Stellen anzuzeigen, die die Raw-SQL-Injection-Technik akzeptieren können:

Natürlich können Sie die obige Abfrage problemlos ohne Injektion schreiben, aber Sie haben die Idee. Die Notluke steht Ihnen fast überall zur Verfügung…. Hoffentlich müssen Sie fast nie eine benutzerdefinierte Lademethode schreiben, um eine gespeicherte Prozedur oder eine vollständig handgeschriebene SQL-Anweisung aufzurufen. Sie können mischen und anpassen, um das gewünschte SQL zu erhalten. Die oben angegebenen Beispiele wurden entwickelt, um die Verwendung in einer Vielzahl von Einstellungen zu demonstrieren und zu testen. Sie sind nicht unbedingt der einfachste oder effizienteste Weg, um die gewünschte Ergebnismenge zu erzielen.

Stellen Sie sich diese als API-Verwendungshandbuch vor, nicht als Designrichtlinien. Wenn Sie beim Codieren Probleme haben, einen Ansatz zu konzipieren, versuchen Sie es mit dem anderen. Ich stimme jedoch den meisten Behörden in diesem Bereich zu, dass die ON-Klausel den Bedingungen vorbehalten sein sollte, die die beiden Tabellen betreffen. In der Regel enthält die ON-Klausel nur eine Spalte aus jeder Tabelle und einen Vergleichsoperator.

Nehmen Sie zum Beispiel die Join-Abfrage. Im obigen SubQuery-Beispiel. Die viel einfachere Abfrage unten gibt dieselbe Ergebnismenge zurück. Die Where-Klausel vereinfacht nicht nur die On-Klausel, sondern eliminiert die SubQuery vollständig. Wählen Sie q. Mitarbeiter-ID, q. Wo q. InnerJoin q1. OrderBy q. ErrorLogId, q. Methode, q. Botschaft ; q. ToAnonymousType-Kontext. ErrorLogId, p. SelectAllExcept q. Absteigend; q. Überspringen 40. Wählen Sie oq. CustID, oq. Von oiq. Wählen Sie oiq. OrderID, oiq. Als "OrderTotal". GroupBy oiq.

Als "Sub"; oq. InnerJoin oq.

(с) 2019 app9bergamo.com