2010-08-27 47 views
0

这对我来说没有多大意义。最近在为数据库表生成SubSonic对象或将列重命名为ColumnX时发生过两次这种情况。第一次它是有意义的,因为列名是Value,一个C#关键字。但是第二次发生时,表格的列名称是Grade,它不是关键字或保留字。有谁知道为什么SubSonic在产生对象时将这个列名变成GradeX?SubSonic生成列表作为ColumnX

谢谢。

回答

0

正如您所设想的那样,它会替换单词,以免它们与.Net或SQL类型冲突。不要忘记亚声速会谈各种数据库提供商,所以尽管“成绩”不是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); 
     } 
+0

谢谢,这是关于这个功能非常有用的信息。我最初忘记提及的是包含成绩列的表格被命名为成绩本身。所以我的理论是,由于SubSonic使行名称单数,成绩列变成了GradeX,所以它不与表本身发生冲突。 – 2010-08-30 16:56:31