【发布时间】:2010-08-28 06:00:00
【问题描述】:
这对我来说没有多大意义。我们最近在为数据库表生成 SubSonic 对象或视图列重命名为 ColumnX 时发生了两次这种情况。第一次是有意义的,因为列名是 Value,一个 C# 关键字。但是第二次出现,表的列名是Grade,不是关键字也不是保留字。有谁知道为什么 SubSonic 在生成对象时会将此列名称转换为 GradeX?
谢谢。
【问题讨论】:
标签: subsonic subsonic2.2
这对我来说没有多大意义。我们最近在为数据库表生成 SubSonic 对象或视图列重命名为 ColumnX 时发生了两次这种情况。第一次是有意义的,因为列名是 Value,一个 C# 关键字。但是第二次出现,表的列名是Grade,不是关键字也不是保留字。有谁知道为什么 SubSonic 在生成对象时会将此列名称转换为 GradeX?
谢谢。
【问题讨论】:
标签: subsonic subsonic2.2
就像您假设的那样,替换单词以使其不与 .Net 或 SQL 类型冲突。不要忘记 SubSonic 会与各种数据库提供商进行对话,因此虽然“Grade”不是 MSSQL 类型,但它可能是 Oracle 或 MySQL 等......
在 SubSonic.Utilities.Utility 下是一个名为 KeyWordCheck 的方法,它执行附加操作。
也许你可以编译自己的版本并修改此方法以排除“等级”:
public static string KeyWordCheck(string word, string table, DataProvider provider)
{
string appendWith = "X";
if (provider.AppendWith != string.Empty)
appendWith = provider.AppendWith;
return KeyWordCheck(word, table, appendWith);
}
【讨论】: