【发布时间】:2010-09-13 09:45:40
【问题描述】:
我有一组 XSD,我从中生成数据访问类、存储过程等。
我没有从这些生成数据库表的方法 - 是否有工具可以为我生成 DDL 语句?
这与Create DB table from dataset table 不同,因为我没有数据集表,而是 XSD。
【问题讨论】:
标签: .net sql database xsd code-generation
我有一组 XSD,我从中生成数据访问类、存储过程等。
我没有从这些生成数据库表的方法 - 是否有工具可以为我生成 DDL 语句?
这与Create DB table from dataset table 不同,因为我没有数据集表,而是 XSD。
【问题讨论】:
标签: .net sql database xsd code-generation
有一个名为XSD2DB 的命令行工具,它从 xsd 文件生成数据库,可在 sourceforge 获得。
【讨论】:
DataSet 来解释 XML Schema,什么时候应该使用XmlSchemaSet 或 XmlSchema 编译和操作模式文件。该代码非常依赖于DataSet 实现,但是,因此我没有深入研究将其修改为功能性。
商业产品:Altova 的XML Spy。
请注意,没有通用的解决方案。 XSD 可以轻松描述未映射到关系数据库的内容。
虽然您可以尝试“自动化”此操作,但您的 XSD 必须在设计时考虑到关系数据库,否则效果不佳。
如果 XSD 的功能映射不好,您必须 (1) 设计某种映射,然后 (2) 编写自己的应用程序将 XSD 转换为 DDL。
去过那里,做到了。雇佣工作——没有可用的开源。
【讨论】:
我使用 XSLT 来做到这一点。 编写您的 XSD,然后通过输出 SQL 命令的手写 XSLT 传递您的数据模型。编写 XSLT 比您可能编写的自定义程序/脚本更快且可重用。
至少我在工作中是这样的,多亏了我有时间在 SO 上闲逛:)
【讨论】:
使用 XSD 文件创建 SQL 数据库模式的最佳方法是一个名为 Altova XMLSpy 的程序,这非常简单:
希望对你有帮助。
【讨论】:
XML 模式描述分层数据模型,可能无法很好地映射到关系数据模型。将 XSD 映射到数据库表与将对象映射到数据库表非常相似,实际上您可以使用像 Castor 这样的框架来实现这两者,它允许您采用 XML 模式并生成类、数据库表和数据访问代码。我想现在有很多工具可以做同样的事情,但是会有一个学习曲线,默认映射很可能不是你想要的,所以你必须花时间定制你使用的任何工具。
XSLT 可能是准确生成所需代码的最快方式。如果是小型架构硬编码,它可能比评估和学习一堆新技术更快。
【讨论】:
使用 Axis wsdl2java(可以接收 .xsd 文件)创建 Java 模型。
使用用于 Java 的数据库生成工具,该工具采用 Java 模型。当然像 Hibernate 这样的东西可以做到这一点?我写了自己的工具(需要几天时间,也用 Java 生成 CRUD 代码)来节省自己的工作时间,也许这会是一个不错的个人项目?
或者只是手动执行,以便您可以检查一切是否正确且良好!数据库工具现在已经足够好了,您可以轻松地为模型创建表而不会出现太多问题。
【讨论】:
可能会看看 Visual Studio 2k8 中的 XSD 工具...我已经从 xsd 创建了一个关系数据集,它可能会以某种方式帮助你。
【讨论】:
xsd.exe生成模式,但必须自己添加关系,参见the XML Bulk Load Examples on MSDN,或this question中的示例。 (我似乎记得修复了一些数据类型,但也许那是从XML 生成XSD。)
xsd.exe 的目录似乎在 Windows 7 上发生了变化。我在 许多 Microsoft SDKs 目录中有它,所以它 似乎不再依赖 Visual Studio(?)。一个目录是:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools.
hyperjaxb(版本 2 和 3)实际上生成休眠映射文件和相关实体对象,并且还对给定的 XSD 和示例 XML 文件进行往返测试。您可以捕获日志输出并自己查看 DDL 语句。 我不得不稍微调整它们,但它为您提供了一个基本的蓝图。
【讨论】: