2017-04-27 6 views
1

Je souhaite récupérer la valeur de la propriété étendue de mes tables et colonnes SSDT pour pouvoir l'utiliser pour certaines générations de modèles sur l'utilisation de T4.Comment puis-je obtenir les valeurs SSDT Extended Property d'un objet table via DacFx

Je ne trouve aucun exemple de ceci fait en ligne, quelqu'un d'autre a-t-il fait cela?

Ce sont les propriétés étendues que vous pouvez ajouter ce qui suit:

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

dans mon modèle T4 où je charge l'info colonne J'ai ceci:

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

Je ne suis pas sûr de ce qui se passe dans le ??? partie pour obtenir cette information sur la propriété étendue. Des idées?

Je suis en mesure d'obtenir d'autres propriétés de la colonne comme annulable, précision, etc.

MS doc sur c'est un peu ... manque.

Répondre

1

La propriété étendue n'est pas une propriété de la colonne, c'est l'inverse, c'est-à-dire que la colonne correspond à la propriété étendue!

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

L'extension de ce Mayhem méthode enchaînant à boucle sur toutes propriétés étendues de l'objet est laissé comme un exercice pour le lecteur ...

+0

Ce. Est. Impressionnant. Merci beaucoup!! – CBerg

+0

Tout comme un suivi pour toute personne lisant cela, je donne les résultats suivants: 'foreach (tableau var en AllTables) {var tableextended = table.GetReferencing() .Lorsque (x => de x.ObjectType.Name == "ExtendedProperty") .FirstOrDefault()? .GetProperty (ExtendedProperty.Value); si (tableextended) // faire quelques choses ici } ' et a confirmé qu'il travaillait et tirait les champs de propriété correctement. – CBerg