我想用ServiceStack的 OrmLite在C#查询AWS红移 。 AWS红移使用PostgreSQL的有线协议作为其查询界面,并提出在可以运行的查询,其中之一是,它不能接受参数化查询(我已经告诉了一些限制,我还没有真正能够找到这在文件备份尚未 )。
所以,我研究它是否有可能使用ORM生成参数化SQL,然后查找/替换参数值。
我怎样才能获得通过OrmLite产生的,然后改变它的SQL运行之前呢?
我想用ServiceStack的 OrmLite在C#查询AWS红移 。 AWS红移使用PostgreSQL的有线协议作为其查询界面,并提出在可以运行的查询,其中之一是,它不能接受参数化查询(我已经告诉了一些限制,我还没有真正能够找到这在文件备份尚未 )。
所以,我研究它是否有可能使用ORM生成参数化SQL,然后查找/替换参数值。
我怎样才能获得通过OrmLite产生的,然后改变它的SQL运行之前呢?
从OrmLite的文档 :
默认情况下,OrmLite 没有使用参数化SQL。 只有API使用参数化语句的所有SQL操作,这些都与帕拉姆后缀,例如确定的:
db.InsertParam(new Person { FirstName = "Jimi", LastName = "Hendrix", Age = 27})
db.UpdateParam(new Person { FirstName = "Jimi", LastName = "Hendrix", Age = 27})
db.DeleteByIdParam<Person>(1)
Parameterized Read operations
var people = db.SelectParam<Person>(q => q.Age == 27)
var person = db.GetByIdParam<Person>(1)
//Existing parameterized query API's
var people = db.Where<Person>(new { FirstName = "Jimi", Age = 27 })
var people = db.Query<Track>("FirstName = @name and Age = @age",
new { name = "Jimi", age = 27 })
在包含单词查询或哪里还使用参数化的SQL另外选择方式( 其他选择方法不 )。 匿名类型传递到哪里都像对待一个和过滤。
var track3 = db.Where<Track>(new { AlbumName = "Throwing Copper", TrackNo = 3 })
查询语句使用与所提供匿名类型(如果有的话)的属性取在参数化SQL
var track3 = db.Query<Track>(
"select * from Track Where AlbumName = @album and TrackNo = @trackNo",
new { album = "Throwing Copper", trackNo = 3 })
它执行后(不是之前),你可以得到最后生成的SQL语句:
db.GetLastSql()
OrmLite不(目前),使这将产生可用时,它已经被执行后,直到SQL。
我发现红移确实在事实上支持参数化查询。