如何通过DBML引用SQL列描述字段?

时间:2010-05-21 19:22:21

标签: sql linq-to-sql

我希望SQL列描述属性保存要显示给用户的列的友好名称。有没有办法可以通过DBML引用这个列属性?

更新:我们最终编写了一个c#方法,它将一个空格注入到驼峰大小写字符串中,并将数据库列重命名为更友好。

3 个答案:

答案 0 :(得分:1)

不,据我所知,sqlmetal和dbml设计器都不会读取保留SQL列描述的扩展属性。可能值得为linq-to-sql寻找提供更多功能的第三方代码生成器。

答案 1 :(得分:0)

您可以编写一个返回此数据的存储过程,并在datacontext类中公开它。

答案 2 :(得分:0)

我不知道在DBML中有什么要做的,但是可以自己提取这些信息,并以某种方式加入它:

SELECT  C.TABLE_SCHEMA
       ,C.TABLE_NAME
       ,C.COLUMN_NAME
       ,COALESCE(xp.value, C.COLUMN_NAME) AS FriendlyName
FROM    INFORMATION_SCHEMA.COLUMNS C
INNER JOIN INFORMATION_SCHEMA.TABLES T
        ON T.TABLE_CATALOG = C.TABLE_CATALOG
           AND T.TABLE_SCHEMA = C.TABLE_SCHEMA
           AND T.TABLE_NAME = C.TABLE_NAME
           AND T.TABLE_TYPE = 'BASE TABLE'
OUTER APPLY FN_LISTEXTENDEDPROPERTY('MS_Description'
                                    ,'SCHEMA', C.TABLE_SCHEMA
                                    ,'TABLE', T.TABLE_NAME
                                    ,'COLUMN', C.COLUMN_NAME) AS xp

扩展属性只能附加到基表列。