这对我来说没有多大意义。我们最近在为数据库表生成 SubSonic 对象或将视图列重命名为 ColumnX 时发生了两次这种情况。第一次是有意义的,因为列名是 Value,一个 C# 关键字。但是第二次出现,表的列名是Grade,不是关键字也不是保留字。有谁知道为什么 SubSonic 在生成对象时将此列名称转换为 GradeX?
谢谢。
这对我来说没有多大意义。我们最近在为数据库表生成 SubSonic 对象或将视图列重命名为 ColumnX 时发生了两次这种情况。第一次是有意义的,因为列名是 Value,一个 C# 关键字。但是第二次出现,表的列名是Grade,不是关键字也不是保留字。有谁知道为什么 SubSonic 在生成对象时将此列名称转换为 GradeX?
谢谢。
就像您假设的那样,它是替换单词,这样它们就不会与 .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);
}