2009-10-28 2 views
0

Как создать XML/XSD из таблицы SQL с несколькими таблицамиКак создать XML/XSD из таблицы SQL с несколькими таблицами

, что я хочу сделать, это создать XML-схему из базы данных (или схемы базы данных)

Это post имеет некоторые интересные код

Особенно

DataSet results = new DataSet(); 

SqlCommand command = new SqlCommand("SELECT * FROM table", new SqlConnection(connectionString)); 

SqlDataAdapter sqlAdapter = new SqlDataAdapter(command); 

sqlAdapter.FillSchema(results, SchemaType.Mapped);//Fills dataset with schema from query 
results.WriteXmlSchema(mySchema); 

Но как я могу генерировать эту XML-схему из нескольких таблиц? Если я просто

Select * from table1,table2 

Все данные в один большой двоичный объект в XML

Я хочу, каждая таблица определена в XML с его содержимое отдельно. что-то

ответ

0

Вы можете захватить схему для каждой таблицы отдельно и объединить ее с помощью XDocument. Вот функция, чтобы захватить схему из запроса к базе данных:

XDocument GrabSchema(
    string dataSetName, 
    string sql) 
{ 
    var con = new SqlConnection("<<YourConnectionString>>"); 
    var command = new SqlCommand(sql, con); 
    var sqlAdapter = new SqlDataAdapter(command); 
    var dataSet = new DataSet(dataSetName); 
    sqlAdapter.FillSchema(dataSet, SchemaType.Mapped); 
    var stream = new MemoryStream(); 
    dataSet.WriteXmlSchema(stream); 
    stream.Seek(0, System.IO.SeekOrigin.Begin); 
    return XDocument.Load(XmlReader.Create(stream)); 
} 

Вы затем объединить две схемы таблицы, как:

var firstSchema = GrabDataset("t1", "select a = 49"); 
var secondSchema = GrabDataset("t2", "select b = '50'"); 
firstSchema.Root.Add(secondSchema.Root.Elements()); 

Вы можете проверить комбинированную схему имеет смысл загрузить его в другой DataSet:

DataSet dataSet = new DataSet(); 
dataSet.ReadXmlSchema(firstSchema.CreateReader()); 
+0

Это очень полезно, я думаю, но как мне написать физический файл? На readXMLSchema я получаю «Недопустимый выбор XPath внутри узла поля .....» DataSet _completeDataSet = new DataSet(); _completeDataSet.ReadXmlSchema (vehicleSchema.CreateReader()); _completeDataSet.WriteXmlSchema ("FleetsDatabaseSchema.xsd"); – Maestro1024

Смежные вопросы