我希望SQL列描述属性保存要显示给用户的列的友好名称。有没有办法可以通过DBML引用这个列属性?
更新:我们最终编写了一个c#方法,它将一个空格注入到驼峰大小写字符串中,并将数据库列重命名为更友好。
答案 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
扩展属性只能附加到基表列。