我们有一组与多个数据库引擎一起使用的应用程序,包括Sql Server和Access。每个方案都单独维护,并且不以文本形式存储,这使得源代码控制变得困难。我们对迁移到以某种基于文本的格式(例如XML或YAML)存储模式的系统感兴趣,该系统带有字段数据类型,外键关联等的描述。
说完这些之后,我们希望在源代码管理中拥有一个文本文件,该文件可用于生成干净的数据库,该数据库至少与SQL Server,Access一起使用(并且最好能够与Oracle,DB2和其他服务器一起使用)引擎)。
我敢肯定,那里有工具或库可以使我们至少部分地了解那里。首先,我发现Altova MapForce看起来可以解决问题,但我有兴趣了解有关同一困境中的任何替代工具或库,甚至是完全不同的解决方案。
注意:这些应用程序是用C++编写的,而ORM解决方案都不能立即用C++获得,并且集成到我们的老化产品中将花费太长时间。
最佳答案
如果您不使用执行此操作的object relational mapper(以及许多其他操作),最简单的方法可能是鞭打一些结构以某种形式(静态)代码定义表和属性,并编写一些生成器以创建该描述中的实际数据库。
这样可以简化源代码控制,如果在设计这些结构时非常小心,则可以在需要时轻松地将其重新用于其他DB。
关于sql-server - 存储与数据库无关的架构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/483331/