2011-01-29 85 views
1

我有一些沒有使用數據庫的舊代碼。現在可以從現有的類自動生成數據庫模式嗎?我知道這似乎比平常的數據庫反向班級的一代。SQL Server數據庫模式是否可以從.NET類生成

但是,如果有一些簡單的方法可以這麼做,那將是一件好事。

+1

您可以創建一個新的實體框架4「模型優先」模型並將您的.NET類轉移到那裏,然後生成SQL DDL語句 - 但這需要相當多的額外工作(設置所有數據庫屬性和定義FK關係等) – 2011-01-29 08:07:17

+0

@marc_s:ER代碼首先允許他從他的POCO直接轉到數據庫模式嗎? – CJ7 2011-12-17 04:39:57

回答

2

當然,有一點反思,你可以生成一些粗略的表創建腳本,甚至存儲過程來支持INSERT/UPDATES/DELETES(如果你願意)。

除非有一個確切一對一映射,您將需要手動清理這些腳本。

編輯:就這進一步闡述(在與@ TomTom的答案一起)

東西,這將是難以/不可能自動推斷:

  • 缺省列值
  • 計算列(如果任何)
  • varchar大小
  • NULL/NOT NULL列
  • 索引

東西,你可以用一堆工作自動完成(但最好用手工,IMO做):

  • 主密鑰分配
  • 外鍵關係
  • 關係
2

不是。或者,只有一個非常愚蠢的方式。沒有額外的註釋.NET包含的信息比db模式少得多。條件,檢查主題。數據類型也丟失了。你認爲這樣的代碼會扣除什麼指數?哎呀,甚至找不到類/表的主鍵是不可能的。

繼承是另一個話題。

您可以生成一個模式作爲開始,但您無法真正生成生產準備好的數據庫,而無需大量註釋這些類。

+0

+1 - 除非數據庫填充了空值和varchar(最大值)列,否則需要手工完成大量工作(正如我在答案中所指出的那樣)。 – 2011-01-29 07:17:29

1

如果您使用的是VS2010,您可能希望查看使用實體框架的Code-First開發,並從DbContext繼承您的類。關於如何做到這一點,ScottGu有一個很好的博客條目here

相關問題