2008-11-27 102 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的結構,以及爲什麼一個小小的變化會產生如此大的影響。

相關問題