2008-11-08 15 views
7

首先,我是Linq to Sql新手,所以請溫柔:)。Linq to SQL和大型數據庫模型

我在過去的3.5年裏開發了現有的ASP.Net應用程序。它下面有相當大的數據模型,大約有350個表格。我正在嘗試用Linq to SQL來做一些新的事情。

第一印象是linq designer和SqlMetal是爲不大於NorthWind示例的數據庫而構建的。這裏有一些問題我有:

  1. 我有表Products需要在很多地方(庫存,發票,生產,...)。如果我將表Products放在每個dbml文件中,linq designer會在它們中的每一箇中創建Product類。我不想那樣。我只想要一個Product類。
  2. 我有關於航運的DataContext。它需要大約40張桌子。這使得dbml文件很難管理。有沒有辦法創建更小的dbml文件,然後將它們(作爲參考)包含到一些「主要」dbml中?

現在,我真的很喜歡Linq,但我認爲它仍然嚴重缺乏任何大於10桌的設計工具。

我現在的解決方案是用Linq設計器構建較小的模型,然後手動合併它們(添加屬性和引用),因此將生成大量代碼,但也會有許多手動工作。

我錯過了一些很大的東西,或者是與Linq to Sql的這種當前狀態?

+0

我沒有答案,但有興趣知道這一點,因爲我注意到了同樣的事情。如果我有很多表格,你使用的方法是我認爲我會做的。 – dtc 2008-11-08 23:16:55

+0

我不明白爲什麼SqlMetal不是您的問題的答案?它適用於大型多表數據庫。我只是將一個批處理腳本連接到Visual Studio的「外部工具」菜單中,這樣我就可以通過單擊一次來重建ORM。 – 2010-09-09 08:55:47

+0

@James McCormack:你能否給我加個答案,並說明你如何組織班級。我想要的是組裝庫存和大約20-30個對應於相同數量的表的類。然後組裝銷售,然後是財務。我沒有找到簡單的方法來實現這一點,所以我訴諸於此:爲少量表創建dbml,然後手動編輯代碼。你知道SqlMetal for .Net4是否得到了改進? – zendar 2010-09-09 09:38:47

回答

-5

如果我是你,是MS推薦ORM我會用Entity Framework因爲這前進Microsoft kills Linq to SQL

+0

我不認爲這回答了這個問題,我認爲當我們試圖在單個EF文件或更小的文件組中模擬350個表時,EF具有相同的缺點。 – dtc 2008-11-08 23:17:54

1

爲什麼你想要多個dbml文件?只需將它們全部合爲一體。這就是它的工作原理。

3

好吧,我的解決方案是使用SQLMetal的/code選項在.cs文件而不是DBML文件中創建普通類,並在分開的文件中使用部分類來擴展生成的ORM類。

我知道這並不能解決您將數據庫的各個部分拆分爲不同的ORM程序集的問題 - 我剛發現沒有DBML/Designer的頭疼,在.cs文件中管理大量類時wasn'太糟糕了。