Database 从对象定义生成数据库表
我知道有几种(自动)方法可以创建数据访问层来操作现有数据库(LINQ到SQL、Hibernate等)。但是我已经厌倦了(我相信应该有更好的方法来做事情),比如:Database 从对象定义生成数据库表,database,orm,code-generation,Database,Orm,Code Generation,我知道有几种(自动)方法可以创建数据访问层来操作现有数据库(LINQ到SQL、Hibernate等)。但是我已经厌倦了(我相信应该有更好的方法来做事情),比如: 在Visio中创建/更改表 使用Visio的“更新数据库”创建/更改数据库 将表导入到“LINQ到SQL类”对象中 相应地更改代码 编撰 如何从对象/实体定义生成数据库模式?我似乎找不到这样的工具的好参考(我希望至少在一些框架中有某种内置支持) 如果我能: 更改对象定义 更改操纵对象的代码 编译(数据库更改自动完成) 你可能正在寻找一个
你可能正在寻找一个合适的人选 我相信这就是政府试图解决的问题。虽然不是专门为“编译(数据库更改自动完成)”而设计的,但它确实解决了处理域模型更改的问题,而不需要严重依赖底层数据模型。一些真正的大问题,例如,将向DB提出异议。不过,你需要有大笔钱才能买得起这款产品。正如Jason所建议的,ObjectDB可能是一个不错的选择。看看。你所描述的是戈姆。它是框架的一部分,是为与Hibernate(将来可能是JPA)一起工作而构建的。当我第一次使用Grails时,它似乎是倒退的。我更喜欢Rails风格的工作流程,即制作表并让框架从数据库模式生成脚手架。GORM为您保存域对象,以便您创建和更改对象,它管理数据库创建/更新。现在我已经习惯了,这就更有意义了。如果您不想寻找新的框架,很抱歉打扰您,但是为了使GORM能够独立使用,它在1.1版上发布。我一直在挖掘一些“主要”框架,Django似乎正是我所说的。从这件事看来似乎是这样
有人对此有什么评论吗?它工作得好吗?当我们构建自己的框架()的第一个版本时,我让它读取预先存在的SQL表并从中自动生成Java对象 当我的同事们从一个不太会说话的背景中构建第二个版本时,他们从对象开始,然后自动生成表 实际上,他们完全忘记了SQL部分,直到我回来添加它。但现在,我们只是在应用程序启动时运行触发器,它在对象模型上迭代,检查表和所有正确的列是否存在,如果不存在,则创建它们。非常方便 事实证明,这比您预期的要容易得多——如果您最喜欢的工具不支持类似的过程,您可以在几个小时内编写它——假设关系到对象的映射相对简单
但问题是,这似乎取决于你在文化上是一个对象人还是一个数据库人——你可以将其中任何一个视为权威来源。是的,Django很管用 是的,它将根据数据模型定义(用python编写)生成SQL表 如果您更新结构,它不会总是改变现有的表,您可能必须手动运行alter表 Ruby on Rails拥有这些特性的更高级版本(Rails迁移),但我不太喜欢这个框架,我发现Ruby和Rails非常独特,它的设计正好支持这种情况。只有代码,没有其他。它可能是您能找到的最具特色的一个,并且它确实完全抽象了模式升级SQL
签出-您将注意到没有任何附加内容用于同步架构。Schema upgrade示例显示了此功能的预期用途。回答得有点晚,但这里是: 我面临着完全相同的问题,最终为它编写了自己的解决方案,但只使用.NET和SQL Server。它基本上实现了您描述的流程:
- 所有数据库对象都作为源代码的一部分作为嵌入式
脚本保存CREATE
- 使用数据访问功能时,会自动(或根据请求)设置DB对象
- 所有非表格更改也会自动(或根据请求)同时执行
- 迁移数据时可能需要特别注意的表更改,也可以在升级数据库时通过(手动创建的)更改脚本执行
- 甚至可以检测对任何数据库对象进行的手动更改,以便验证和纠正模式完整性
- 可选的轻量级ORM可以映射存储过程和对象以及结果集(甚至多个)
- 命令行应用程序有助于保持SQL源文件与开发数据库同步
这是一款非常好的产品。这几乎是真的……还在等待答案。答案是它是对象数据库,因此不是基于高级关系模型。相关回答:顺便说一句,该产品确实让你感觉到你在处理对象数据库。此外,它实际上提供了一个(目前仅用于内存中的数据)。