2008-11-18 6 views

Respuesta

26

¿Es posible generar un esquema XML desde una base de datos?

Seguro, XMLSpy puede generar el esquema XML desde una base de datos.

Hay another way, aunque nunca he probado:

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

Pequeña nota para el método nativo: esa consulta devolverá el esquema XML de la tabla, pero también cualquier dato que contenga. Para obtener solo el esquema, reemplace "SELECT * FROM" con "SELECT TOP 0 * FROM". –

2

que podía hacerlo de esta manera:

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

El problema es, ¿cómo podría adaptar este método por lo que podría ser utilizado con una cantidad indeterminada de tablas? ¡Sin construir una cadena a través de concatenación que no es exactamente ideal!

-1

Utilice la plantilla de dataset-tipo de MyGeneration para autogenerar el XSD (http://www.mygenrationssoftware.com). Es gratis, OSS, y funciona genial. Además, el equipo de NDbUnit está trabajando actualmente en una herramienta complementaria para NDbUnit que permitirá no solo extraer el esquema de la base de datos, sino también editar los datos de prueba contenidos en el conjunto de datos XML adjunto. ETA para esta herramienta es a mediados de julio.

Cuestiones relacionadas