我希望NHibernate为它生成的SQL查询中的所有列名和表名添加引号。 生成的查询示例是 -
SELECT this_.Id as Id29_0_ from "Rfp" this_
但我希望它看起来像 -
SELECT this_."Id" as Id29_0_ from "Rfp" this_
我已按如下方式实施了INamingStrategy:
public class AutoQuoteAllNamingStrategy : INamingStrategy
{
public string ClassToTableName(string className)
{
return DefaultNamingStrategy.Instance.ClassToTableName(className);
}
public string PropertyToColumnName(string propertyName)
{
return DefaultNamingStrategy.Instance.PropertyToColumnName(propertyName);
}
public string TableName(string tableName)
{
return "\"" + tableName + "\"";
}
public string ColumnName(string columnName)
{
return "\"" + columnName + "\"";
}
public string PropertyToTableName(string className, string propertyName)
{
return DefaultNamingStrategy.Instance.PropertyToTableName(className, propertyName);
}
public string LogicalColumnName(string columnName,string propertyName)
{
return DefaultNamingStrategy.Instance.LogicalColumnName(columnName, propertyName);
}
}
我喜欢这种方式,因为我目前正在使用MS SQL,所有的表和列名称都是大小写混合。我现在已经将数据库移动到Oracle 10G,我认为如果没有引用这些名称,则认为它们是大写的,因此无法找到表/列。