- 我會爲每個表類創建獨立的項目嗎?
不,不要爲每個表類創建單獨的項目。這太細微了。
- 這是否創建一個巨大的.dll? 每個項目默認都會創建一個單獨的DLL(我相信你可以用IL合併來改變它)。但是,每個命名空間與DLL沒有直接的關係。也就是說,您可以在一個DLL中擁有多個名稱空間。
我們通常所做的是創建一個DAL庫。這將是它自己的項目,通常命名爲ProductName.Data
然後在那裏我們可能有一個名稱空間,如ProductName.Data.Models
或ProductName.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連接分離的數據對象。
聽起來好像你說我應該在VS中創建一個名爲「My Entities」的項目,然後根據需要添加包含每個新表類的新文件夾,這會創建一個.dll。這是做到這一點的正確方法嗎? – Brian
將有一個特定於實體的文件夾,該實體將保存與該實體相關的所有類。 –