自动引用nhibernate中的所有表名和列名

时间:2013-01-28 11:06:38

标签: c# asp.net-mvc nhibernate

我希望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,我认为如果没有引用这些名称,则认为它们是大写的,因此无法找到表/列。

0 个答案:

没有答案