从 ServiceStack.Ormlite 生成的查询中删除双引号

Remove double-quotes from generated query from ServiceStack.Ormlite

我们的 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 我知道我可以自己编写所有查询,但是要更改的代码太多,所以我尽量避免使用此解决方案,因为目前它太耗时了。

根据我对源代码的检查,这似乎无法开箱即用。

当 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)

覆盖其中任何一个以排除引号会得到你正在寻找的东西。