我们的DBA不希望我们在查询中使用双引号字段和表(不要问我原因)...问题是ServiceStack.OrmLite将所有双引号和表都用双引号引起了,而我没有关于如何禁用此行为的任何想法。 我们正在使用ServiceStack.OrmLite版本4.5.4.0 。
例如:
public class ClassA {
public int ID {get;set;}
public string Name {get;set;}
}
如果我们进行以下简单查询:
using (IDbConnection db = dbFactory.Open())
{
return db.LoadSingleById<ClassA>(id);
}
将生成:
select "ID", "Name" from "ClassA" where "ID" = @0
这就是我们的dba想要的:
select ID, Name from ClassA where ID = @0
如果有人能帮助我,我会很感激
PS,我知道我可以自己编写所有查询,但是要更改的代码太多,所以我试图避免使用此解决方案,因为此刻此过程非常耗时。
答案 0 :(得分:2)
根据我对源代码的检查,似乎无法立即对其进行更改。
ORMLite构建查询时,它将获取列名并将其包装在引号中。看到这里:https://github.com/ServiceStack/ServiceStack.OrmLite/blob/master/src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs#L384
一种替代方法是创建一个新的OrmLiteDialectProvider
,该继承您正在使用的任何提供程序(例如SQL Server,Oracle等),并覆盖以下方法之一:
GetQuotedColumnName(string columnName)
GetQuotedName(string name)
覆盖其中任何一个以排除引号都会为您提供所需的信息。