从 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)
覆盖其中任何一个以排除引号会得到你正在寻找的东西。
我们的 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)
覆盖其中任何一个以排除引号会得到你正在寻找的东西。