4 Stimmen

Führen Sie raw SQL mit ServiceStack.OrmLite aus

Ich arbeite mit ServiceStack.OrmLite unter Verwendung von MS SQL Server. Ich möchte raw SQL gegen die Datenbank ausführen, aber die ursprüngliche Dokumentation enthält nur eine Beschreibung, wie dies nur mit dem SELECT-Statement erfolgt. Das reicht mir nicht.

Ich finde keinen Weg, um so etwas Einfaches wie das auszuführen:

UPDATE table1
SET column1 = 'value1' 
WHERE column2 = value2

Zum Beispiel mit:

var two = db.Update(@"UPDATE table1
    SET column1 = 'value1' 
    WHERE column2 = value2");

Die Ausführung dieser Ausdrücke mit db.Update() oder db.Update<> führt zu schwer verständlichen Fehlern wie

Falsche Syntax in der Nähe des Schlüsselworts 'UPDATE'.

Ich möchte raw SQL verwenden, weil mein tatsächlicher UPDATE-Ausdruck JOIN verwendet.

6voto

mythz Punkte 138304

db.Update dient zum Aktualisieren eines Modells oder Teils des Modells, wie in der OrmLite-Dokumentation zum Update gezeigt. Sie können sich dafür entscheiden, die lose typisierte API zu verwenden, um Ihre Aktualisierungsanweisung zu erstellen, z.B:

db.Update(table: "table1", 
  set: "column1 = {0}".Params("value1"), 
  where: "column2 = {0}".Params("value2"));

Die Params Erweiterungsmethode escapet Ihre Werte für Sie.

Andernfalls kann jede beliebige Roh-SQL-Anweisung mit db.ExecuteSql() ausgeführt werden.

1voto

Rosdi Kasim Punkte 22151

Wenn es sich um eine SELECT-Anweisung handelt und Sie sie mit Raw SQL ausführen möchten, können Sie Folgendes verwenden:

List results = db.SqlList("SELECT * FROM Person WHERE Age < @age", new { age=50});

Referenz: https://github.com/ServiceStack/ServiceStack.OrmLite#typed-sqlexpressions-with-custom-sql-apis

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X