【问题标题】:C#: Autogenerating DDL and ORM classes from XML schema (XSD) fileC#:从 XML 模式 (XSD) 文件自动生成 DDL 和 ORM 类
【发布时间】:2011-10-28 16:45:48
【问题描述】:

我有一个相当大的 XSD 文件here

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

  1. 生成 DDL(用于 PostgreSQL),DDL 应在适当的地方包含初始值,由 XSD 中的“允许”值指定

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

谁能推荐一种工具或一系列工具/技术来实现这一目标?

如果我必须推出自己的解决方案,有人可以推荐一个很好的 XSLT 教程(最好是一本食谱 - 因为我已经知道一些 XML/XPath)。

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

另外,我在 Ann Lewkowicz's XSLT transform file 使用 XSD 文件生成 DDL - 但似乎陷入了无限循环 - 并且还抱怨“无限递归”

所以我需要以下帮助:

  • 首先,任何人都可以测试/检查XSD file 是否确实搞砸了? - 如果是,如何解决?
  • 如何从 XSD 文件生成 DDL 和 ORM?

【问题讨论】:

  • 关于生成DDL/ORM,你看过T4吗?我个人认为 T4 比 XSLT (olegsych.com/2007/12/text-template-transformation-toolkit) 更适合这些任务。
  • XSD 搞砸了。当我尝试在 VS 中打开它时出现此错误:此架构是无效的 XSD 架构并有以下错误:未声明“w3.org/XML/1998/namespace:lang”属性。
  • @hugh jadick:感谢您的确认。我已经解决了这个问题(虽然还没有上传固定文件) - 所以唯一剩下的问题是如何从 XSD 生成 ORM 和 DDL。我已经设法在 Visual Studio 中打开了固定的 XSD 文件(看起来真的很好!)。肯定有办法从 Visual Studio 生成 DDL 和 ORM?
  • 我不是 ORM 方面的专家,但您看过 Microsoft 提供的 ORM 实体框架吗?

标签: c# xslt orm xsd xsd.exe


【解决方案1】:

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

这样做比人们想象的要少得多,而且带来很多好处,尤其是您实际上可以完全控制所生成的内容。你甚至可以(并且很容易地)将它提升到一个新的水平并在运行时生成这些东西。如果架构是最终的,则后者几乎没有意义,但如果它不断发展,则可以节省大量时间。

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

【讨论】:

    猜你喜欢
    • 2011-08-19
    • 2012-06-18
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    相关资源
    最近更新 更多