16. Sep 2019
Lesedauer 2 Min.
Doppelte Portion Datenbanken
Downloads
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>