这对我来说没什么意义。最近我们在为数据库表生成SubSonic对象或将视图列重命名为ColumnX时最近发生了两次。第一次有意义,因为列名是Value,一个C#关键字。但第二次发生时,表的列名是Grade,它不是关键字或保留字。有谁知道为什么SubSonic在生成对象时将此列名称转换为GradeX?
感谢。
答案 0 :(得分:0)
正如您所假设的那样,替换单词以使它们不与.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);
}