我使用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。
答案 0 :(得分:6)
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()
。
答案 1 :(得分: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