使用C#.net 4中多个XSD文件中定义的复杂类型从XSD创建数据表

使用C#.net 4中多个XSD文件中定义的复杂类型从XSD创建数据表,c#,.net,xsd,C#,.net,Xsd,我有一堆来自 我需要做两件事: 为每种类型创建表,我的第一个表用于Contact.xsd中的Contact 当填充表时,我需要将XML从表中取出,以便它可以作为REST请求发送 我无法通过第1项:( 我在.NETC#项目中将所有这些XSD标记为嵌入式资源 然后,我使用反射来使用DataSet.ReadXmlSchema(ContactXsdStream)加载XSD,但是这个XSD引用了BaseTypes.XSD中指定的类型,它抛出了一个错误“未定义的complexType'DataContrac

我有一堆来自

我需要做两件事:

  • 为每种类型创建表,我的第一个表用于Contact.xsd中的Contact
  • 当填充表时,我需要将XML从表中取出,以便它可以作为REST请求发送
  • 我无法通过第1项:(

    我在.NETC#项目中将所有这些XSD标记为嵌入式资源

    然后,我使用反射来使用DataSet.ReadXmlSchema(ContactXsdStream)加载XSD,但是这个XSD引用了BaseTypes.XSD中指定的类型,它抛出了一个错误“未定义的complexType'DataContractBase'用作复杂类型扩展的基”

    谢谢你的帮助

    其他考虑事项 我知道没有一个联系人复杂类型不能作为单个表直接映射到,但是我可能需要将复杂类型(如Address)作为XML字符串嵌入到数据表中

    我需要简单类型的原因是数据表被传递到数据同步API(Simego DataSync Studio)。此同步工具允许我双向同步到CRM、SharePoint、Excel和其他数据源。如果更合适,我将使用其他同步框架欢迎任何其他建议

    问候
    Si

    当您的Xsd包含其他Xsd文件时,这些文件必须存在于磁盘上的正确位置


    即使从资源中获取主xsd并将其作为流或简单字符串传递给ReadXmlSchema,包含的架构也必须作为文件存在于相对于当前工作目录的指定位置。

    也有同样的问题-我不相信无法将包含其他架构文件的xml架构加载到datasetThanks用于输入。我在托管服务器上,因此在部署中只能有一个DLL,但是我可以将它们作为程序集中的嵌入资源访问。最后,我使用XSD.exe从XML创建了一个XSD,然后从XSD创建了一个类。
    var assembly = Assembly.GetExecutingAssembly();
    var dataset = new DataSet();
    var manifestResourceStream = assembly.GetManifestResourceStream(schemaName);
    if (manifestResourceStream == null)
      throw new FileNotFoundException(string.Format("Unable to find schema resource {0}", schemaName));
    
    using (var textStreamReader = new StreamReader(manifestResourceStream))
    {
      dataset.ReadXmlSchema(textStreamReader);
      textStreamReader.Close();
    }
    return dataset;