我知道有一些(自动)方法可以创建数据访问层来操作现有数据库(LINQ to SQL,Hibernate等...)。但我有点厌倦(我相信应该有更好的做事方式),比如:
如何从对象/实体定义生成数据库模式?我似乎无法找到像这样的工具的良好参考(我希望至少在某些框架中有某种内置支持)。
如果我可以,那将是完美的:
答案 0 :(得分:4)
签出DataObjects.Net - 旨在支持这种情况。仅限代码,没有别的。它的schema upgrade layer可能是你能找到的最有特色的,它实际上完全抽象了模式升级SQL。
签出product video - 您会发现没有其他内容可用于同步架构。架构升级示例显示了此功能的预期用途。
答案 1 :(得分:1)
您可能正在寻找Object Database。
答案 2 :(得分:1)
我认为这是Microsofy Entity Framework试图解决的问题。虽然没有专门设计为“编译(数据库更改是自动完成的)”,但它确实解决了处理域模型更改的问题,而没有对基础数据模型的巨大依赖。
答案 3 :(得分:1)
正如Jason所说,对象db可能是一个不错的选择。看看db4objects。
答案 4 :(得分:1)
你所描述的是GORM。它是Grails框架的一部分,用于与Hibernate(将来可能是JPA)一起使用。当我第一次使用Grails时,它似乎倒退了。我更熟悉Rails风格的工作流程,即制作表格并让框架从数据库模式生成脚手架。 GORM会为您保留域对象,以便您创建和更改对象,它可以管理数据库创建/更新。现在我已经习惯了它,这更有意义。很抱歉,如果您不是在寻找新的框架,而是在roadmap版本1.1上,以便让GORM独立可用,请取笑您。
答案 5 :(得分:1)
当我们构建自己的框架的第一个版本(Inon Datamanager)时,我让它读取预先存在的SQL表并从中自动生成Java对象。
当来自Smalltalkish背景的同事构建第二个版本时,他们从对象开始,然后自动生成表格。
实际上,他们完全忘记了SQL部分,直到我回来并添加它。但是现在我们只是在应用程序启动时运行一个触发器,它会迭代对象模型,检查表和所有正确的列是否存在,如果不存在则创建它们。非常方便。
事实证明这比你想象的容易得多 - 如果你最喜欢的工具不支持类似的过程,你可能会在几个小时内编写它 - 假设对象映射的关系相对简单。 / p>
但重点是,它似乎取决于你在文化上是一个客体人还是数据库人 - 你可以将其中任何一个视为权威来源。
答案 6 :(得分:0)
一些非常大的狗,比如ERwin Data Modeler,会反对DB。你需要花大价钱购买产品。
答案 7 :(得分:0)
我一直在挖掘一些“主要”框架,似乎Django正是我所说的。或者似乎从screencast开始。
有没有人对此有任何评论?它运作良好吗?
答案 8 :(得分:0)
是的,Django效果很好。
是的,它将从您的数据模型定义(用python编写)
生成SQL表如果更新结构,它不会总是更改现有表,您可能需要手动运行ALTER表
Ruby on Rails有这些功能的更高级版本(Rails迁移),但我不喜欢这个框架,我发现ruby和rails非常特殊
答案 9 :(得分:0)
这是一个迟到的答案,但在这里:
我遇到了完全相同的问题,最后为它编写了我自己的解决方案,但是只使用.NET和SQL Server。它基本上实现了您描述的过程:
CREATE
脚本包含数据库的图书馆在LGPL许可下是免费的。