2008-11-18 5 views

Répondre

26

Est-il possible de générer un schéma XML à partir d'une base de données?

Il est certain que XMLSpy peut générer un schéma XML à partir d'une base de données.

Il y a another way, bien que je ne l'ai jamais testé:

create table Person 
(
Age int not NULL check(Age > 0) , 
Height numeric(10,2) not NULL check(Height > 5), 
Gender varchar(5) not null check(Gender in ('M', 'F', 'O')), 
BirthDate datetime null, 
) 

DECLARE @schema xml 
SET @schema = (SELECT * FROM Person FOR XML AUTO, ELEMENTS, XMLSCHEMA('PersonSchema')) 
select @schema 
+9

Petite note à la méthode native: cette requête retournera en effet le schéma XML de la table, mais aussi toutes les données qu'elle contient. Pour obtenir uniquement le schéma, remplacez "SELECT * FROM" par "SELECT TOP 0 * FROM". –

2

je pourrais le faire comme ceci:

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

Le problème est, comment pourrais-je adapter cette méthode afin qu'il puisse être utilisé avec une quantité indéterminée de tables? Sans construire une chaîne bien que concaténation qui n'est pas exactement idéale!

-1

Utilisez le modèle de jeu de données typé de MyGeneration pour générer automatiquement le fichier XSD (http://www.mygenrationssoftware.com). C'est gratuit, OSS, et fonctionne très bien. En outre, l'équipe NDbUnit travaille actuellement sur un outil complémentaire à NDbUnit qui permettra non seulement d'extraire le schéma de la base de données, mais aussi de modifier les données de test contenues dans le jeu de données XML qui l'accompagne. L'ETA pour cet outil est vers la mi-juillet.

Questions connexes