2016-08-09 33 views
0

我正在考慮與數據庫通信的類是否應該是單身人士。作爲一個單身人士的數據庫通信類

而不是在所有需要的地方注入上下文,我創建了一個內部數據庫類,它是單例類。

是不是很好的做法?

代碼:

class DatabaseService 
{ 
    public FreelanceOrganizerDataContext DatabaseContext { get; private set; } = new FreelanceOrganizerDataContext(); 
    static DatabaseService _singleton = new DatabaseService(); 
    private DatabaseService() { } 

    public static DatabaseService GetDatabaseService() 
    { 
     return _singleton; 
    } 

    //Save Section 
    public void AddProject() 
    { 

    } 

    public void AddCustomer() 
    { 

    } 

    //etc 

} 
+1

單身人士通常是一個壞主意。 Google有一個工具可以找到它們,並將它們從他們的代碼中解脫出來。這是21年後今天將在島外投票的GoF模式之一。 – duffymo

+0

謝謝你的迴應。你能告訴我更多關於這種解決方案的限制嗎? – SaszaKonopka

回答

2

我會建議使用一個IoC如UnityAutofac。您可以執行諸如將注入依賴注入到類中,控制對象的生命週期(實例化的時間和頻率)以及更好地爲單元測試設置自己的內容。

+0

整個應用程序基於MVVM模式 - 我應該爲每個模型類創建服務類(與數據庫通信),其中包含對由IoC容器注入的DbContext對象的引用? – SaszaKonopka