可以更改数据库架构的最佳方法?

时间:2011-05-22 07:56:56

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

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

  1. 哪种技术我必须使用代码生成器,ORM,手动方法或任何其他?
  2. 表现也很好。

4 个答案:

答案 0 :(得分:3)

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

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

  • LINQ到SQL
  • EF with EDMX
  • EF代码优先,EF Power Tools CTP1为您创建映射

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

编辑:

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

答案 1 :(得分:2)

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

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

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

性能完全取决于您构建代码模板的方式。

但是,这不会有助于您需要反复重做工作。

答案 2 :(得分:1)

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

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

没有针对数据库的预定义代码生成器,这意味着您必须向生成模板提供所有必需的代码,但至少您将获得100%“您的代码”。因为您已经手动执行此操作,所以可以使用该代码“提供”生成器模板。

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

答案 3 :(得分:0)

ADO.NET Entity Framework是个好人。