4

我知道有几种(自动)方法可以创建数据访问层来操作现有数据库(LINQ to SQL、Hibernate 等)。但我有点厌倦了(我相信应该有更好的做事方式),比如:

  1. 在 Visio 中创建/更改表
  2. 使用 Visio 的“更新数据库”创建/更改数据库
  3. 将表导入“LINQ to SQL 类”对象
  4. 相应地更改代码
  5. 编译

从对象/实体定义生成数据库模式的方法怎么样?我似乎找不到像这样的工具的良好参考(我希望至少在某些框架中提供某种内置支持)。

如果我能做到这将是完美的:

  1. 更改对象定义
  2. 更改操作对象的代码
  3. 编译(数据库更改自动完成)
4

10 回答 10

4

查看DataObjects.Net - 旨在支持这种情况。只有代码,没有别的。它的模式升级层可能是你能找到的最有特色的一层,它确实完全抽象了模式升级 SQL。

查看产品视频- 您会注意到没有任何额外的内容来同步架构。架构升级示例显示了此功能的预期用途。

于 2009-07-20T19:47:58.240 回答
1

当我们构建我们自己的框架(Inon Datamanager)的第一个版本时,我让它读取预先存在的 SQL 表并从中自动生成 Java 对象。

当我来自 Smalltalkish 背景的同事构建第二个版本时,他们从对象开始,然后自动生成表格。

实际上,他们完全忘记了 SQL 部分,直到我回来添加它。但是现在我们只是在应用程序启动时运行一个触发器,它迭代对象模型,检查表和所有正确的列是否存在,如果不存在则创建它们。很方便。

事实证明这比您预期的要容易得多 - 如果您最喜欢的工具不支持类似的过程,您可能会在几个小时内编写它 - 假设与对象映射的关系相对简单。

但关键是,这似乎取决于你在文化上是对象人还是数据库人——你可以将其中任何一个视为权威来源。

于 2008-08-27T16:16:22.773 回答
1

您可能正在寻找对象数据库

于 2008-08-26T23:03:07.487 回答
1

我相信这是微软实体框架试图解决的问题。虽然不是专门为“编译(数据库更改是自动完成的)”而设计的,但它确实解决了处理域模型更改的问题,而无需大量依赖底层数据模型。

于 2008-08-26T23:05:27.307 回答
1

正如 Jason 所建议的,object db 可能是一个不错的选择。看看db4objects

于 2008-08-26T23:27:41.217 回答
1

你描述的是GORM。它是Grails框架的一部分,旨在与 Hibernate(将来可能是 JPA)一起使用。当我第一次使用 Grails 时,它似乎倒退了。我更喜欢使用 Rails 风格的工作流程来制作表格并让框架从数据库模式生成脚手架。GORM 为您保留域对象,以便您创建和更改对象,它管理数据库创建/更新。现在我已经习惯了,这更有意义。如果您不是在寻找新框架,很抱歉取笑您,但它在 1.1 版的路线图上,以使 GORM 独立可用。

于 2008-08-27T13:48:38.357 回答
0

我一直在研究一些“主要”框架,似乎 Django 完全符合我的要求。或者从这个截屏视频中可以看出。

有人对此有何评论吗?它运作良好吗?

于 2008-08-27T15:52:08.387 回答
0

一些真正的大狗,例如ERwin Data Modeler,会反对 DB。不过,您需要有大笔资金才能买得起该产品。

于 2008-08-26T23:13:33.653 回答
0

有点晚的答案,但在这里:

我遇到了完全相同的问题,最终为它编写了自己的解决方案,但仅使用 .NET 和 SQL Server。它基本上确实实现了您描述的过程:

  • 所有数据库对象都作为CREATE源代码的一部分作为嵌入式脚本保存
  • 使用数据访问功能时会自动(或根据请求)设置 DB 对象
  • 所有非表格更改也会同时自动(或根据请求)执行
  • 可能需要特别注意迁移数据的表更改是通过(手动创建的)更改脚本执行的,也在升级数据库时执行
  • 甚至可以检测到对任何数据库对象所做的手动更改,从而可以验证和纠正模式完整性
  • 可选的轻量级 ORM 可以映射存储过程和对象以及结果集(甚至多个)
  • 命令行应用程序有助于使 SQL 源文件与开发数据库保持同步

包含数据库的库在 LGPL 许可下是免费的。

http://code.google.com/p/bsn-modulestore/

于 2010-11-25T23:58:28.990 回答
0

是的,Django 运行良好。

是的,它将根据您的数据模型定义生成您的 SQL 表(用 python 编写)

如果您更新结构,它不会总是更改现有表,您可能必须手动运行 ALTER 表

Ruby on Rails 具有这些功能的更高级版本(Rails 迁移),但我不太喜欢该框架,我发现 ruby​​ 和 rails 非常独特

于 2008-11-15T22:50:24.957 回答