2010-09-11 47 views
2

我目前正在研究ASP.NET MVC 2和LINQ to SQL。這一切看起來很酷。但是我有一些應用程序和開發生命週期問題。Visual Studio中的DB設計策略

目前,我在SqlServer Management Studio中設計DB。 然後我通過刪除並重新導入修改後的表來更新我的DBML文件。

問題:

  1. 我無法找到如何簡單地更新整個DBML架構。
  2. 我的DBML然後失去了一些我所做的更改,例如重命名關係成員或將某些int映射到枚舉。
  3. 如果我想要一個SQL腳本部署我的數據庫(或保持架構在源代碼控制下),我需要使用'Genererate Script'SSMS嚮導,這將是很酷的,如果a)它可以記住我的設置和b )它可以是自動的。

我應該換一種方式(從我的DBML開始並生成數據庫)?我應該去其他框架(NHibernate的?我可以用它一些Linq的味道?)

另外,我讀LINQ2SQL已經過時,贊成Linq的實體。這是否意味着讓我的生活變得更加美好的終極工具將再次讓我在長期內失去時間?

謝謝你脫掉一些燈。

回答

0

作爲後續,只想說,我終於找到並愛上了Huagati DBML/EDMX Tools

說實話,我必須說,自從我購買它以來,價格已經大幅上漲。無論如何,我相信它仍然是值得的。

對於正在尋找相同種類的MySQL(或其他)工具的人,DevArt是你的朋友。

2

如果你是從頭開始你的DB模式由Scottgu概述的你可以考慮「Code-First Development with Entity Framework 4"

我一直在使用這一個新的項目,我發現它非常有益的。 - 尤其是對於測試

我從簡單的POCO類開始表示我的數據,然後隨着項目的進展,我將允許EF4使用我的「內存中」示例數據將模式生成爲「真實」數據庫...現在,我正在使用兩者的混合在內存POCO(用於開發和TDD)和自動生成的DB Schema(自動加載更多的「現實」數據)中進行演示等等,目前爲止我非常高興

0

對LINQ2SQL有很多意見,以及它是「過時」還是「停止」。但它仍然是.NET框架和一個很好的工具,所以如果它適合你的需求,那麼你應該使用它。坦率地說,實體框架還不完美,如果你不需要它提供的額外的靈活性,那麼它不值得痛苦。如果我有一箇中小型項目,那麼我肯定會再次使用LINQ2SQL(並通過EF)。

至於你的問題,是的,你會失去任何名稱或不同類型的映射,當你刪除並重新添加一個表。我所知道的選項是

  1. 僅刪除/重新添加已更改的表(並非全部表)
  2. 嘗試改變到位DBML表,而不是刪除/重新添加。您可以添加和刪除列,更改列名稱和數據類型,在DBML上添加所有關係。

我喜歡渲染到數據庫之前創建對象的類JcMalta的建議,但如果你發現SQL Studio中動作要快發展,那麼它可能僅僅是最快的創建表有拖放到你的DBML。這是一個令人討厭的問題,它必須改變數據庫中的某些東西,並將更改推送到代碼中,但代碼生成工具非常好,並消除了大部分的痛苦。

+0

柯克,謝謝你的想法。然而,「code-gen工具非常好,帶走了大部分的痛苦」是我不同意的地方:該工具無法正確更新我的DBML。這是一個真正的痛苦! – 2010-09-13 11:48:25

+0

正如您所指出的那樣,我知道您將失去任何名稱更改和枚舉類型映射,但是這不是什麼大不了的事情?如果它太糟糕了,那麼你可以手動修改DBML來匹配數據庫對象(而不是使用代碼生成) – 2010-09-13 22:22:53