2017-04-27 8 views
1

SSDTテーブルとカラムの拡張プロパティの値を取得したいので、モデル生成に使用できますT4を使ってDacFx経由でテーブルオブジェクトのSSDT拡張プロパティ値を取得するには

この例はオンラインでは見つかりませんでしたが、他に誰かがこれを行っていますか?

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

私はありません:私はこれを持っている私は、列の情報をロードしています私の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'; 

これら

は次で追加できる拡張プロパティです確かに何に行くの???この拡張プロパティ情報を取得するための部分。何か案は?

私はこの上

MSドキュメントは少し...欠けているなど、NULL可能、精度などの列に関する他のプロパティを取得することができています。

答えて

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); 

...オブジェクトのすべて拡張プロパティは、読者のための課題として残され

+0

これをループにこの方法チェイン騒乱を拡張します。そうです。驚くばかり。どうもありがとうございました!! – CBerg

+0

これを読んでいる人のフォローアップと同じように、私は次のように書いています: 'foreach(すべてのテーブルのvarテーブル) { var tableextended = table.GetReferencing() .Where(x => x.ObjectType.Name == "ExtendedProperty") .FirstOrDefault()? .GetProperty(ExtendedProperty.Value); if(tableextended) //ここで何かしてください } これは機能していて、正しくプロパティフィールドを取得していることを確認しました。 – CBerg

関連する問題