【问题标题】:Execute raw SQL using ServiceStack.OrmLite使用 ServiceStack.OrmLite 执行原始 SQL
【发布时间】:2013-07-08 12:53:49
【问题描述】:

我正在使用 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。

【问题讨论】:

    标签: sql servicestack ormlite-servicestack


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 非常感谢。 db.ExecuteSql() 正是我在连接表上运行 UPDATE 所需要的。
    【解决方案2】:

    如果是 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

    【讨论】:

      猜你喜欢
      • 2011-03-20
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 2018-06-17
      • 2014-12-18
      • 2015-12-20
      • 2014-06-06
      • 1970-01-01
      相关资源
      最近更新 更多