如何通过DacFx获取表对象的SSDT扩展属性值

时间:2017-04-27 04:36:27

标签: t4 sql-server-data-tools dac

我想检索我的SSDT表和列的扩展属性的值,以便我可以将它用于我正在使用T4的一些模型生成的东西。

我无法在网上找到这方面的任何例子,还有其他人这样做过吗?

这些是您可以添加以下内容的扩展属性:

GO
EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = 
N'somepropertytext', @level0type = N'SCHEMA', @level0name = N'dbo', 
@level1type = N'TABLE', @level1name = N'table_name', @level2type = 
N'COLUMN', @level2name = N'column_name';

在我的T4模板中,我正在加载列信息,我有这个:

var property = column.GetProperty<string>(???);

我不知道????部分获取此扩展属性信息。有什么想法吗?

我能够获得有关列的其他属性,如nullable,precision等。

MS doc对此有点......缺乏。

1 个答案:

答案 0 :(得分:1)

扩展属性不是列的属性,反之亦然,即列是扩展属性引用的内容!

var propertyName = column.GetReferencing()
    .Where(x=> x.ObjectType.Name == "ExtendedProperty").First()
    .Name.ToString();

var propertyValue = column.GetReferencing()
    .Where(x=> x.ObjectType.Name == "ExtendedProperty").First()
    .GetProperty(ExtendedProperty.Value);

扩展这种方法 - 链接混乱以循环遍历对象的所有扩展属性,留给读者练习......