Quand on utilise l’adapteur SQL de Biztalk pour mettre à jour, supprimer ou insérer des informations dans la base à l’aide d’updategram, il peut parfois devenir fastidieux d’utiliser Visual studio pour générer les schémas.
En effet quand on est confronté à la mise à jour d’un grand nombre de tables, on préférait pouvoir générer les schémas par lot.
Ceci est possible à l’aide d’une classe exposée par l’assembly « Microsoft.BizTalk.Adapter.Sql.dll »
La classe à utiliser est SqlHelper. Cette classe dispose d’une méthode CreateWSDL que nous pouvons utiliser pour créer les schémas.
La première étape consiste à instancier SqlHelper et à fournir les paramètres pour la génération du WSDL :
SqlHelper hlp = new SqlHelper();
hlp.targetNameSpace = "http://www.btug.fr/monTargetNamespace";
hlp.inputRootElementName = "NomElementRequest";
hlp.outputRootElementName = "NomElementResponse";
//initialize la connection à la base de données
hlp.initialize("Provider=SQLOLEDB.1;Integrated Security=SSPI;
Initial Catalog=testdb;Data Source=.");
Ensuite il nous faut récupérer la liste des colonnes pour la table que nous désirons mettre à jour et préciser celles qui doivent être incluses dans le schéma :
ColumnInfoCollection info = new ColumnInfoCollection();
hlp.GetColumnList("MaTableOuMaVue", info);
foreach (ColumnInfoItem item in info) item.isSelected = true;
Une fois cette opération effectuée nous pouvons appeler la méthode CreateWSDL pour générer le WSDL pour l’action retenue (Insert / Update / Delete):
string wsdl;
hlp.CreateWSDL(SqlHelper.UpdateOperation.Insert, "MaTableOuMaVue", info, out wsdl);
Comme nous ne sommes pas intéressés par le WSDL mais uniquement par le schéma de l’updategram, nous pouvons à l’aide d’un XMLDocument extraire celui-ci:
XmlDocument domWSDL = new XmlDocument();
domWSDL.LoadXml(wsdl);
XmlElement schm = (XmlElement)domWSDL.SelectSingleNode(
"//*[local-name()='schema']");
XmlDocument domUpdategram = new XmlDocument();
domUpdategram.AppendChild(domUpdategram.ImportNode(schm, true));
domUpdategram.Save("MaTableOuMaVue.xsd");
Il est ainsi possible d’automatiser la génération des schémas pour l’adapteur SQL.