Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 从对象定义生成数据库表_Database_Orm_Code Generation - Fatal编程技术网

Database 从对象定义生成数据库表

Database 从对象定义生成数据库表,database,orm,code-generation,Database,Orm,Code Generation,我知道有几种(自动)方法可以创建数据访问层来操作现有数据库(LINQ到SQL、Hibernate等)。但是我已经厌倦了(我相信应该有更好的方法来做事情),比如: 在Visio中创建/更改表 使用Visio的“更新数据库”创建/更改数据库 将表导入到“LINQ到SQL类”对象中 相应地更改代码 编撰 如何从对象/实体定义生成数据库模式?我似乎找不到这样的工具的好参考(我希望至少在一些框架中有某种内置支持) 如果我能: 更改对象定义 更改操纵对象的代码 编译(数据库更改自动完成) 你可能正在寻找一个

我知道有几种(自动)方法可以创建数据访问层来操作现有数据库(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源文件与开发数据库同步
    包含数据库的库在LGPL许可下是免费的


    这是一款非常好的产品。这几乎是真的……还在等待答案。答案是它是对象数据库,因此不是基于高级关系模型。相关回答:顺便说一句,该产品确实让你感觉到你在处理对象数据库。此外,它实际上提供了一个(目前仅用于内存中的数据)。