2008-11-27 40 views
2

需要将我应用程序的几个主要数据库表中存在的核心字段之一从varchar(5)更改为varchar(8)。依赖于这些表的存储过程的列表非常长,更不用说在我的数据访问层(带有TableAdapter的ASP.NET 2.0数据集)中所做的更改。更改架构后更新我的asp.net应用程序/数据库的最佳方式是什么?

有什么办法来自动(和安全)改变所有重要领域的类型,并更改传播到所有的存储过程依赖于它/数据访问层调用?

我正在使用SQL Server 2005数据库。

回答

3

您可能会感兴趣在这个essay通过Scott Ambler on Database Refactoring。我想他也有一本关于它的书。我相信,基本思想是引入一个适当宽度的新列,将现有数据复制到新列中,实施触发器以同步任何新插入/更新,将SP/DAL迁移到使用新列,然后完全完成后,移除旧列。显然,所有新代码都使用新列。不幸的是,我不知道有任何自动更新SP/DAL的方法。

1

尽管它现在对您没有多大帮助,您可以(在将来)使用代码生成工具来为您生成数据访问层和任何必要的(非自定义)存储过程。我使用.netTiers,并且改变字段名称,数据类型或列大小(如您的情况)非常简单。

如果你对.netTiers等东西感兴趣,你可以看看他们的网站here

不幸的是,我不知道一种方法来轻松更新你有的一切。但是,您可以通过使用诸如Redgate的SQL Refactor之类的工具来处理所有数据库更改(请参阅here)。

1

CommandBuilder可能会或可能不会对您有用。它有它的亲和骗局(就像我猜想的一样)。至于在这个阶段你会做多少好事,我不知道,但它存在,可以使用,所以我想我应该提高它:)

我个人会以此为契机,看看我的数据访问层。你所改变的是非常小的,但它对系统有着深远的影响,为什么?

如果您预见系统会有更多变化,我肯定会更多地考虑DAL的结构,以及为什么一个小小的变化会产生如此大的影响。

相关问题