【问题标题】:SubSonic generation of tables with columns as ColumnXSubSonic 生成以 ColumnX 为列的表
【发布时间】:2010-08-28 06:00:00
【问题描述】:

这对我来说没有多大意义。我们最近在为数据库表生成 SubSonic 对象或视图列重命名为 ColumnX 时发生了两次这种情况。第一次是有意义的,因为列名是 Value,一个 C# 关键字。但是第二次出现,表的列名是Grade,不是关键字也不是保留字。有谁知道为什么 SubSonic 在生成对象时会将此列名称转换为 GradeX?

谢谢。

【问题讨论】:

    标签: subsonic subsonic2.2


    【解决方案1】:

    就像您假设的那样,替换单词以使其不与 .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);
            }
    

    【讨论】:

    • 谢谢,这是关于这个函数的非常有用的信息。我最初忘记提到的是包含 Grade 列的表本身被命名为 Grades。所以我的理论是,由于 SubSonic 使行名单数,所以 Grade 列已更改为 GradeX,因此它不会与表本身冲突。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多