4

我正在使用 MS SQL Server 工作 ServiceStack.OrmLite。我想对数据库执行原始 SQL,但原始文档仅包含如何使用 SELECT 语句执行此操作的描述。这对我来说还不够。

我找不到像这样简单的方法来运行任何东西:

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

使用,例如:

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

使用 db.Update() 或 db.Update<> 运行此表达式会产生不全面的错误,例如

关键字“UPDATE”附近的语法不正确。

我想使用原始 sql,因为我真正的 UPDATE 表达式使用 JOIN。

4

2 回答 2

6

db.Update用于更新模型或部分模型,如OrmLite 的更新文档中所示。您可以选择使用松散类型的 API 来构建您的更新语句,例如:

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

Params扩展方法为您转义了您的值。

否则,执行任意原始 sql 的方法是使用db.ExecuteSql().

于 2013-07-08T14:08:01.377 回答
1

如果它是一个 SELECT 语句并且您想使用原始 sql 执行,您可以使用:

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

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

于 2016-06-16T00:05:14.687 回答