2012-05-08 57 views
1

我們使用Visual Studio 2010將windows應用程序轉換爲基於.Net的瀏覽器。雖然我不是.Net的新手,但我是基於3層體系結構創建應用程序的新手。我想爲我們的數據庫中的每個表創建類,並將它們放在名稱空間下。類名與表名相同,因此名稱空間中的每個類都將被引用,類似於CompanyName.ProductName.Entity。{table name}。現在我的問題:在命名空間下組織大量的類

這是否可行?

我會爲每個表類創建獨立的項目嗎?請注意,隨着更多程序轉換,將創建新的表類。

這是否創建一個巨大的.dll?

其他開發人員如何訪問我創建的類,以及它們的存儲位置,以便我可以使用Using指令引用這些類?

回答

0

我正在尋找的簡單答案是創建一個解決方案,使用我的名稱空間作爲默認名稱空間。對於每個文件,創建一個新類,並在每個文件中指定命名空間。感謝所有迴應的人。

0

總是使用單獨的cs文件創建類名,所以很容易對文件進行版本控制。它與dll的大小無關,如果我們將該類保存在單個文件或多個文件中。

在解決方案中創建類似於Project> ProductName> Classes的文件夾結構。

+0

聽起來好像你說我應該在VS中創建一個名爲「My Entities」的項目,然後根據需要添加包含每個新表類的新文件夾,這會創建一個.dll。這是做到這一點的正確方法嗎? – Brian

+0

將有一個特定於實體的文件夾,該實體將保存與該實體相關的所有類。 –

0
  1. 我會爲每個表類創建獨立的項目嗎?
    不,不要爲每個表類創建單獨的項目。這太細微了。
  2. 這是否創建一個巨大的.dll? 每個項目默認都會創建一個單獨的DLL(我相信你可以用IL合併來改變它)。但是,每個命名空間與DLL沒有直接的關係。也就是說,您可以在一個DLL中擁有多個名稱空間。

我們通常所做的是創建一個DAL庫。這將是它自己的項目,通常命名爲ProductName.Data然後在那裏我們可能有一個名稱空間,如ProductName.Data.ModelsProductName.Data.Repositories

命名空間主要用於幫助您組織代碼。他們還幫助編譯器。例如,如果您有一個名爲Users的數據庫類,並且該數據庫類位於XYZ.Data,那麼如果視圖模型位於單獨的命名空間中,則仍然可以使用名爲Users的視圖模型。 XYZ.ViewModels

我們所做的另一件事是保持同一產品的DLL中的根名稱空間相同。所以我們最近在XYZ.Data有我們的數據庫。然後,我們將應用程序特定的邏輯放在一個單獨的DLL中,並將其命名爲XYZ.AppLogic我們還在命名空間XYZ.ViewModels中查看了模型。

我不認爲有任何硬/快速的規則限制你擁有的命名空間的數量。默認情況下,Studio會嘗試爲項目中的每個文件夾創建一個新的名稱空間。這就是說,我常常儘量避免名稱空間超負荷,因爲我不希望看到這樣的事情在我的文件上:

using XYZ.Data.Models.Accounts; 
using XYZ.Data.Models.Users; 
using XYZ.AppLogic.Authentication; 
using XYZ.AppLogic.Users; 
using XYZ.AppLogic.Settings; 
using XYZ.ViewModels.UserPreferences; 

然而,這更多的是個人的喜好比什麼都重要的。

編輯解決方案查看

  • MySolution
    • MyProj.Data
      • 模型
        • User.cs
        • Account.cs
        • Settings.cs
      • UserRepository.cs
      • AccountRepository.cs

User.cs是我的POCO(純醇」 CLR對象),它定義桌子。

Repository文件夾包含特定於我的ORM(我使用PetaPoco)的內容,它讓我能夠實際訪問我的用戶數據。

例如,我UserRepository可能有一個方法

public User GetById(int id) 
{ 
    var db = new Database(<myConnectionStringName>); 
    return db.SingleOrDefault<User>(id); 
} 

這句法是針對PetaPoco,但它是我如何從實際DB連接分離的數據對象。

+1

我將數據庫中的所有表格稱爲實體,但在您引用DAL庫時看到了您的觀點。我想將所有的表格分組在MyNamingConvention.Entities之類的單個命名空間下。到目前爲止,這聽起來像是我創建了一個可以容納我所有課程的項目。至於如何在這個項目中組織他們就是我迷失的地方。如果我在解決方案資源管理器中右鍵單擊項目名稱,是否添加一個文件,然後在新文件夾中添加一個新類,或者繼續添加具有相同名稱空間聲明的類? – Brian

+0

我可能會錯誤地使用單詞項目 - 也許我應該說解決方案? – Brian

+0

是的,每個表格添加一個新文件。否則,該文件會很快變得笨拙。我通常有一個Models文件夾,然後是一個Repository文件夾或類似於實際上DB工作的東西。 – taylonr