2011-05-22 78 views
3

我知道各種技術(但不知道)像代碼生成器,ORMs等,我想知道哪些是最好的方法,在開發期間可以改變數據庫模式(大變化),如添加列到表,添加表到數據庫,更改列的類型等。我目前正在這個架構中的項目在每天更改我正在使用手動過程來創建BLL,BOL和DAL但我面臨的問題來改變模式後的管理這些圖層D B。請告訴我如何使這容易?數據庫模式可以更改的最佳方法?

  1. 哪種技術我必須使用代碼生成器,ORM,手動方法或任何其他?
  2. 表現也不錯。
+3

在編寫必須更改的代碼之前,您是否可以不等到數據庫模式穩定? – Oded 2011-05-22 07:59:21

回答

3

這不是關於編程,而是關於項目管理。管理層/客戶必須明白,更改數據模式往往會對開發時間產生非常大的影響。你使用哪種技術是絕對不重要的,因爲即使有很好的代碼生成工具,你也可以每天最多4小時修復由於缺少屬性,新屬性,不同實體等而導致的破壞代碼。確保你顯示了時間量花在這項活動上。定期展示。一旦管理層從20MD看到你在改變你的數據訪問層(=沒有爲10MD增加商業價值)上花費10MD,他們就會做那些事情。

從視圖中,您可以使用任何你生成類的技術點:

  • LINQ到SQL
  • EF與EDMX
  • EF與代碼優先和EF電動工具CTP1到創建映射你

或者你可以用NHibernate的更復雜的方式在那裏你會嘗試手動重新映射新模式,以現有的實體。

編輯:

根據你也可以檢查ASP.NET動態數據或MVC腳手架的應用程序的類型和複雜性。

2

這聽起來像是一個非常適合代碼生成的問題。

有些ORM會在幕後爲您做代碼生成,但通常只有DAL。

類似mygeneration可能更適合生成所有圖層。

性能將完全取決於您構建代碼模板的方式。

但是,這不會有助於您需要重做一遍又一遍的事實。

0

ADO.NET Entity Framework是一個很好的。

+1

它不會生成業務邏輯層或業務對象層,只是數據訪問層。 – Oded 2011-05-22 08:05:45

1

我同意在這裏代碼生成是一種合適的技術。我的方法是構建數據庫模式的模型。然後,您將使用代碼生成框架來構建必要的代碼。我選擇的工具是AtomWeaver,但您也可以嘗試EMF甚至Xtext

在AtomWeaver IDE中,使用ABSE建模方法構建數據庫模式的模型。這種方法可以讓你通過塊建立一個模型(認爲「表」,「列」,「鍵」等)。對於每個「塊」,您定義爲BLL,BOL或DAL生成的內容。每次進行更改時,都可以再次進行再生。

數據庫沒有預定義的代碼生成器,這意味着您必須爲生成模板提供所有必需的代碼,但至少您會獲得100%的「代碼」。由於您已經手動執行了該操作,因此可以使用該代碼「生成」生成器模板。

建築物代碼生成器需要一些時間。它似乎並沒有得到回報,但一旦你開始改變並能夠快速獲得新代碼,你就會改變我的想法。

相關問題