C#:从XML模式(XSD)文件自动生成DDL和ORM类

C#:从XML模式(XSD)文件自动生成DDL和ORM类,c#,xslt,orm,xsd,xsd.exe,C#,Xslt,Orm,Xsd,Xsd.exe,我有一个相当大的XSD文件可用 我想从该文件生成以下内容: 生成DDL(对于PostgreSQL),DDL应在适当的情况下包含初始值,如XSD中的“允许”值所指定 生成一个ORM,允许我对在步骤1中创建的数据库中的记录执行CRUD操作 有人能推荐一种或一系列工具/技术来实现这一点吗 如果我不得不推出自己的解决方案,有人能推荐一个好的XSLT教程吗(最好是一本食谱——因为我已经知道一些XML/XPath) 顺便说一句,我在Windows上尝试了xsd.exe-它失败了,并打印了一条错误消息,表明x

我有一个相当大的XSD文件可用

我想从该文件生成以下内容:

  • 生成DDL(对于PostgreSQL),DDL应在适当的情况下包含初始值,如XSD中的“允许”值所指定

  • 生成一个ORM,允许我对在步骤1中创建的数据库中的记录执行CRUD操作

  • 有人能推荐一种或一系列工具/技术来实现这一点吗

    如果我不得不推出自己的解决方案,有人能推荐一个好的XSLT教程吗(最好是一本食谱——因为我已经知道一些XML/XPath)

    顺便说一句,我在Windows上尝试了xsd.exe-它失败了,并打印了一条错误消息,表明xsd文件中存在循环引用。然后我在mono上尝试了xsd.exe,效果不错,但创建的文件中有一些无效语句。我猜测(可能是错误的)xsd.exe不是实现这两个目标的方法-如果我错了,请告诉我

    此外,我尝试从XSD文件生成DDL,但似乎陷入了无限循环中,并且还抱怨“无限递归”

    因此,我需要以下方面的帮助:

    • 首先,是否有人能测试/检查系统是否确实出了问题如果是,如何修复
    • 如何从XSD文件生成DDL和ORM

      • 就我个人而言,我会自己编写生成器。那里可能有好的发电机,但我没有看到。我尝试使用的所有代码(尽管我从未使用XSD作为起点)都会生成糟糕的代码,更糟糕的是,不可能定制来处理不可避免出现的每一个怪癖

        这样做的工作量比人们想象的要小得多,而且会带来很多好处,尤其是你可以完全控制所生成的内容。您甚至可以(而且非常容易)将其提升到下一个级别,并在运行时生成这些内容。如果模式是最终的,后者几乎没有意义,但如果它不断发展,则可以节省大量时间


        我很确定这不是您希望的答案,如果有人知道这项工作的好工具,我也会感兴趣。

        关于生成DDL/ORM,您看过T4吗?我个人认为T4比XSLT()更适合这些任务。当我尝试在VS中打开它时,会出现此错误:此架构是一个无效的XSD架构,并且存在以下错误:''属性未声明。@hugh jadick:谢谢您的确认。我已经解决了这个问题(虽然还没有上传固定文件),所以剩下的唯一问题是如何从XSD生成ORM和DDL。我已经成功地在VisualStudio中打开了固定的XSD文件(看起来真不错!)。肯定有办法从VisualStudio生成DDL和ORM吗?我不是ORM方面的专家,但你们看过微软ORM提供的实体框架吗?