Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据集创建SQL Server数据库_C#_Sql_Sql Server_Xml_Dataset - Fatal编程技术网

C# 从数据集创建SQL Server数据库

C# 从数据集创建SQL Server数据库,c#,sql,sql-server,xml,dataset,C#,Sql,Sql Server,Xml,Dataset,我在DataSet中读取了xsd和xml文件,现在我想从这个DataSet foreach (DataTable dt in temp.Tables) { foreach (DataColumn dc in dt.Columns) { //example for one column SqlCommand createtable = new SqlCommand( "create table " + dt.TableName + "

我在
DataSet
中读取了xsd和xml文件,现在我想从这个
DataSet

foreach (DataTable dt in temp.Tables) {
    foreach (DataColumn dc in dt.Columns) {
        //example for one column
        SqlCommand createtable = new SqlCommand(
            "create table " + dt.TableName + " (" 
            + dc.ColumnName + "  varchar(max))", conn);
        createtable.ExecuteNonQuery();
    }
}
但我有一些问题,当我创建db表时,我需要XSD中的列类型和大小(在示例中使用
varchar(max)
)。如何解决这个问题

例如,在xsd中,我有

<xs:restriction base="xs:string">
<xs:maxLength value="36"/>
<xs:minLength value="1"/>
</xs:restriction>



最后,我需要脚本来创建具有列大小的db表(如xsd)


UPD:可能使用
XmlSchemaSet
来解析XSD?

我想没有通用的解决方案。
XSD
可以很容易地描述一些不映射到关系数据库的东西。虽然您可以尝试“自动化”这一点,但您的XSD必须在设计时考虑到关系数据库,否则将无法正常工作

但是,您可以使用
SQLServer管理对象
SqlBulkCopy
将内存中的数据表传输到SQLServer数据库


有关更多信息,请参阅链接。希望这对您有所帮助。

使用
XSD2DB

XSD2DB是一个用
C#
编写的命令行工具,它将读取
Microsoft ADO.NET兼容的数据集模式文件(XSD)
,并生成数据库


在这种情况下,脚手架能帮助您吗


也许看一看,我知道有一种方法可以首先使用脚手架对数据库进行反向工程

遍历DataTable的Columns属性的DataColumn,并创建适当的列定义。我不明白您的意思(检查;)。您应该将XML直接导入SQL Server以创建新的数据库。无需使用C#应用程序。试试这个:您可以从数据集列中获取数据类型、最大长度以及可能更多的信息。。。
<xs:restriction base="xs:string">
<xs:maxLength value="40"/>
</xs:restriction>
<xs:restriction base="xs:decimal">
<xs:totalDigits value="19"/>
<xs:fractionDigits value="2"/>
</xs:restriction>