2009-07-17 101 views
1

我設計了一些使用Visual Studio類圖表的類。現在我想使用ORM和其他持久性機制來保存這些數據。我想知道是否有一種方法可以根據我的類中的屬性生成SQL,因爲它們很好地代表了所需的數據庫結構。這將爲我節省大量的手動SQL打字,並給我一個不錯的開始。應該/可以生成一個類的數據庫模式嗎?

我沒有從數據庫模型開始,因爲我想讓我的持久性與實際的「域層」分離(不確定這是否是正確的命名)。

然後ORM映射器(LLBLGen)可以根據這個模式生成編碼,我只需要將生成的對象映射到我的持久性接口。

這是一個好主意,還是我在錯誤的道路上?

我發現了一個似乎可以勝任這項工作的工具(MindScape LightSpeed),但不幸的是它僅適用於VS2008。

回答

1

這是一個壞主意。類設計和數據庫設計不是一回事。

就我個人而言,我在概念級別上使用免費的Visual Studio加載項NORMA進行設計。它將從概念模型生成模式,並且也可以生成類。

它生成的類對我的口味有點沉重,但事實證明,如果您不擔心XSLT,可以自定義代碼生成。

由於對象角色建模的本質,您放置在模型上的約束條件可用於推斷數據庫模式和「類」模型。

1

這取決於。如果該項目很小,並且您的期限很緊。當然。但是,生成的代碼幾乎總是比手寫代碼更難以維護。這對於數據庫模式生成是一樣的。看看你的項目範圍。也許甚至生成數據庫,並看看你是否喜歡它的外觀。然後自己決定。重新評估你的下一個項目。一種尺寸不適合所有。

+0

這確實是一個小項目,具有相對平坦的數據庫模式。任何想法如何做到這一點? (我可以使用反射自己做,但不會節省時間;)) – 2009-07-17 14:18:10

+0

我已經用Sparx Enterprise Architect廉價地完成了這項工作。導入類,然後使用Transform命令將它們轉換爲DDL。如果這是一次性黑客攻擊,請獲取試用版。 – 2009-07-17 14:22:07

+0

我肯定會使用第三方ORM試圖創建我自己的解決方案。 LLBLGen不是一個不錯的選擇。你也可以使用NHibernate。 – 2009-07-17 14:24:21

4

有許多ORM可以根據域模型類生成數據庫模式。此外,還有一些ORM是專爲這種開發方式而設計的。它是「Model First」「代碼優先」概念,有人認爲它是數據庫應用程序開發的未來,因爲LINQ現在正在取代SQL。例如,實體框架的下一個版本將完全支持這個概念。我可以推薦嘗試DataObjects.Net,它會自動生成和升級數據庫模式並支持LINQ查詢。

相關問題