Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 2 Min.

Doppelte Portion Datenbanken

Eine Sammlung an NoSQL-Datenbanken und ein Fluent-Interface für RDBMS
Es soll sie ja noch geben: die Entwickler, die Entity Framework oder einen ähnlichen OR-Mapper nicht verwenden können oder dürfen. Das bedeutet dann aber, dass Abfragen an eine SQL-Datenbank normalerweise über SQL-Statements in String-Form abgesetzt werden. Schön ist nicht nur anders, sondern dieser Weg wird auch weder vom Compiler überwacht noch von IntelliSense unterstützt. Da kommt eine Bibliothek wie SqlKata gerade recht. Sie ermöglicht es, SQL-Abfragen über eine Fluent-Syntax zu formulieren. Die Suche nach dem Datensatz mit id= 88 sieht so aus:
<span class="hljs-keyword">var</span> query = <span class="hljs-keyword">new</span> <span class="hljs-type">Query</span>(<span class="hljs-string">"Sections"</span>).Where(<span class="hljs-string">"id"</span>, <span class="hljs-number">88</span>); 
Die Query kann man sich dann als SQL-String ausgeben lassen. Die Bibliothek kann die Abfrage aber auch gleich ausführen und das Ergebnis anzeigen. In dem folgenden Beispiel sind beide Varianten enthalten:
<span class="hljs-keyword">using</span> <span class="hljs-type">System</span>;
<span class="hljs-keyword">using</span> <span class="hljs-type">MySql</span>.<span class="hljs-type">Data</span>.<span class="hljs-type">MySqlClient</span>;
<span class="hljs-keyword">using</span> <span class="hljs-type">SqlKata</span>;
<span class="hljs-keyword">using</span> <span class="hljs-type">SqlKata</span>.<span class="hljs-type">Compilers</span>;
<span class="hljs-keyword">using</span> <span class="hljs-type">SqlKata</span>.<span class="hljs-type">Execution</span>;

namespace <span class="hljs-type">FlowApp</span>
{
  class <span class="hljs-type">Program</span>
  {
    <span class="hljs-keyword">static</span> <span class="hljs-built_in">void</span> <span class="hljs-type">Main</span>(<span class="hljs-built_in">string</span>[] args)
    {
      <span class="hljs-keyword">var</span> compiler = new <span class="hljs-type">MySqlCompiler</span>();
      // <span class="hljs-type">Ausgabe</span> des <span class="hljs-type">SQL</span>-<span class="hljs-type">Strings</span>
      <span class="hljs-keyword">var</span> query = new <span class="hljs-type">Query</span>(<span class="hljs-string">"Sections"</span>).<span class="hljs-type">Where</span>(<span class="hljs-string">"id"</span>, <span class="hljs-number">88</span>);
      <span class="hljs-type">SqlResult</span> sql = compiler.<span class="hljs-type">Compile</span>(query);
      <span class="hljs-type">Console</span>.<span class="hljs-type">WriteLine</span>(sql);

      // direkte <span class="hljs-type">Abfrage</span> an die <span class="hljs-type">Datenbank</span> 
      <span class="hljs-keyword">var</span> connection = new <span class="hljs-type">MySqlConnection</span>(
        <span class="hljs-string">"Server=localhost; Database=dotnetprodata; </span>
<span class="hljs-string">        Uid=dnpUser; Pwd=*****;"</span>);
      <span class="hljs-keyword">var</span> db = new <span class="hljs-type">QueryFactory</span>(connection, compiler);
      <span class="hljs-keyword">var</span> sections = db.<span class="hljs-type">Query</span>(<span class="hljs-string">"Sections"</span>)
        .<span class="hljs-type">WhereContains</span>(<span class="hljs-string">"name"</span>, <span class="hljs-string">"Front"</span>).<span class="hljs-type">First</span>();
      <span class="hljs-type">Console</span>.<span class="hljs-type">WriteLine</span>(sections);
    }
  }
} 
Die Ausgabe auf der Konsole sieht dann so aus:
{DapperRow, id = <span class="hljs-string">'74'</span>, name = <span class="hljs-string">'Frontend'</span>,
 remark = <span class="hljs-string">'WPF, ASP.NET, AJAX, WinForms'</span>,
 <span class="hljs-keyword">order</span> = <span class="hljs-string">'10'</span>, color = <span class="hljs-string">'#00A066'</span>}
<span class="hljs-keyword">SELECT</span> * FROM <span class="hljs-string">'Sections'</span> <span class="hljs-keyword">WHERE</span> <span class="hljs-string">'id'</span> = <span class="hljs-number">88</span>
 

Schwerpunkt

<b>MongoDB</b><br/>MongoDB ist eine universelle, dokumentenbasierte, verteilte Datenbank für Entwickler moderner Anwendungen und für die Cloud-Ära.<br/><a href="https://www.mongodb.com" rel="noopener" target="_blank">https://www.mongodb.com</a>

Aktuelle Downloads

<b>Net-Core-DocX-HTML-To-PDF-Converter </b><br/>.NET Core Library zum Erstellen von angepassten Reports basierend auf Word-docx- oder HTML-Dokumenten sowie zum Konvertieren in PDF.<br/><a href="https://github.com/smartinmedia/Net-Core-DocX-HTML-To-PDF-Converter" rel="noopener" target="_blank">https://github.com/smartinmedia/Net-Core-DocX-HTML-To-PDF-Converter</a>

Neueste Beiträge

DWX hakt nach: Wie stellt man Daten besonders lesbar dar?
Dass das Design von Websites maßgeblich für die Lesbarkeit der Inhalte verantwortlich ist, ist klar. Das gleiche gilt aber auch für die Aufbereitung von Daten für Berichte. Worauf besonders zu achten ist, erklären Dr. Ina Humpert und Dr. Julia Norget.
3 Minuten
27. Jun 2025
DWX hakt nach: Wie gestaltet man intuitive User Experiences?
DWX hakt nach: Wie gestaltet man intuitive User Experiences? Intuitive Bedienbarkeit klingt gut – doch wie gelingt sie in der Praxis? UX-Expertin Vicky Pirker verrät auf der Developer Week, worauf es wirklich ankommt. Hier gibt sie vorab einen Einblick in ihre Session.
4 Minuten
27. Jun 2025
„Sieh die KI als Juniorentwickler“
CTO Christian Weyer fühlt sich jung wie schon lange nicht mehr. Woran das liegt und warum er keine Angst um seinen Job hat, erzählt er im dotnetpro-Interview.
15 Minuten
27. Jun 2025
Miscellaneous

Das könnte Dich auch interessieren

UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Mythos Motivation - Teamentwicklung
Entwickler bringen Arbeitsfreude und Engagement meist schon von Haus aus mit. Diesen inneren Antrieb zu erhalten sollte für Führungskräfte im Fokus stehen.
13 Minuten
19. Jan 2017
Evolutionäres Prototyping von Business-Apps - Low Code/No Code und KI mit Power Apps
Microsoft baut Power Apps zunehmend mit Features aus, um die Low-Code-/No-Code-Welt mit der KI und der professionellen Programmierung zu verbinden.
19 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige