【问题标题】:Best approach where Database schema can be changed?可以更改数据库架构的最佳方法?
【发布时间】:2011-08-30 12:20:18
【问题描述】:

我了解各种技术(但不是知识),例如代码生成器、ORM 等,我想知道在开发期间可以更改(大更改)数据库架构的最佳方法,例如在表中添加列,将表添加到数据库,更改列类型等。我目前正在处理这个架构中的一个项目,每天都在更改我正在使用手动过程来创建 BLL、BOL 和 DAL,但是在更改架构后我面临管理这些层的问题数据库。请告诉我如何使这变得容易?

  1. 我必须使用代码生成器、ORM、手动方法还是其他任何技术?
  2. 性能也不错。

【问题讨论】:

  • 您不能等到数据库模式稳定后再编写必须更改的代码吗?

标签: .net asp.net orm code-generation


【解决方案1】:

这不是关于编程,而是关于项目管理。管理层/客户必须明白,经常改变数据模式会对开发时间产生很大的影响。您将使用哪种技术绝对不重要,因为即使使用良好的代码生成工具,您也可以每天花费 4 小时以上的时间来修复因缺少属性、新属性、不同实体等而损坏的代码。确保显示时间量花费在这个活动上。定期展示它。一旦管理层发现您从 20MD 开始花费 10MD 来更改数据访问层(= 10MD 没有增加业务价值),他们就会采取行动。

从技术的角度来看,您可以使用任何为您生成类的东西:

  • Linq-to-sql
  • 带有 EDMX 的 EF
  • EF 使用代码优先和 EF Power Tools CTP1 为您创建映射

或者您可以使用 NHibernate 执行更复杂的方法,您将手动尝试将新架构重新映射到现有实体。

编辑:

根据应用程序的类型和复杂性,您还可以检查 ASP.NET 动态数据或 MVC Scaffolding。

【讨论】:

    【解决方案2】:

    这听起来像是一个非常适合代码生成的问题。

    一些 ORM 在幕后为您生成代码,但通常只有 DAL。

    mygeneration 之类的东西可能更适合生成所有层。

    性能完全取决于您如何构建代码模板。

    但是,这些都无助于您需要一遍又一遍地重做工作。

    【讨论】:

      【解决方案3】:

      我也同意代码生成在这里是一种合适的技术。我的方法是建立数据库模式的模型。然后,您将使用代码生成框架来构建您需要的代码。我选择的工具是AtomWeaver,但您也可以尝试EMF 甚至Xtext

      在 AtomWeaver IDE 中,您可以使用ABSE 建模方法构建数据库模式的模型。这种方法让您可以按块构建模型(想想“表”、“列”、“键”等)。对于每个“块”,您定义为您的 BLL、BOL 或 DAL 生成什么。每次进行更改时,您都可以重新生成。

      数据库没有预定义的代码生成器,这意味着您必须为生成模板提供所有必要的代码,但至少您会得到 100% 的“您的代码”。因为您已经手动完成了,所以您可以使用该代码来“提供”生成器模板。

      构建代码生成器需要一些时间。一开始似乎没有回报,但一旦你开始改变并能够快速获得新代码,我猜你就会改变主意。

      【讨论】:

        【解决方案4】:

        【讨论】:

        • 它不会生成业务逻辑层或业务对象层,只生成数据访问层。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-16
        相关资源
        最近更新 更多