从DACPAC文件中读取元数据

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

从DACPAC文件中读取元数据SQL数据库项目生成时会生成dacpac文件,可从中读出所需的元数据,进行一些转换(如生成数据字典)

 

var model = new TSqlModel(@"D:\kljob\CardLan\CardLanDB\bin\Debug\cardlandb.dacpac");  xmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.Encoding = new UTF8Encoding(false); settings.NewLineChars = Environment.NewLine; MemoryStream ms = new MemoryStream(); XmlWriter writer=XmlWriter.Create(ms,settings); int startID=31;writer.WriteStartDocument();writer.WriteStartElement("root");foreach (var s innew ModelTypeClass[]{ModelSchema.PRocedure ,ModelSchema.View}){   var allTables = model.GetObjects(DacQueryScopes.UserDefined,s );    var tableScripts = from t in allTables                select t ;      foreach(var x in tableScripts){         writer.WriteStartElement("QueryObject");         writer.WriteElementString("ObjectID",startID++.ToString());         writer.WriteElementString("SourceType", x.ObjectType.Name);         writer.WriteElementString("ObjectName", x.Name.Parts[1]);         writer.WriteElementString("Remark","");             int id=0;            foreach(var c in x.GetChildren())            {               writer.WriteStartElement("QueryObjectCols");               writer.WriteElementString("Title",c.Name.Parts[2]);               writer.WriteElementString("ObjColID",id++.ToString());               writer.WriteElementString("Field",c.Name.Parts[2]);               writer.WriteElementString("Width","80");               writer.WriteElementString("Sortable","1");               if(s==ModelSchema.Procedure)                  writer.WriteElementString("ValueType",c.GetReferenced(Parameter.DataType).First().Name.Parts[0]);               else                  writer.WriteElementString("ValueType",c.GetReferenced().First().GetReferenced(Column.DataType).First().Name.Parts[0]);               writer.WriteElementString("ShoWorder","1");               writer.WriteEndElement();             }         writer.WriteEndElement();         break;      }  } writer.WriteEndElement(); writer.WriteEndDocument();writer.Close();string xml = Encoding.UTF8.GetString(ms.ToArray()); Console.WriteLine(xml); //tableScripts.Dump();  

 

 

 

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航