2016-08-09 5 views
0

私は、データベースと通信するクラスがシングルトンであるべきかどうかを考えています。シングルトンとしてのデータベース通信クラス

どこでもコンテキストを注入するのではなく、シングルトンクラスであるDatabaseクラスを作成しました。

いいですか?

コード:

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パターンの1つです。 – duffymo

+0

ありがとうございました。このような解決策の制約についてもっと教えてください。 – SaszaKonopka

答えて

2

私は、このようなUnityAutofacとしてのIoCを使用することをお勧めします。 DependencyをInject Dependeciesなどのクラスに追加したり、オブジェクトのライフサイクルを制御したり(インスタンス化されるタイミングや頻度など)、単体テストのために自分自身を設定することができます。

+0

アプリケーション全体がMVVMパターンに基づいています - IoCコンテナによって注入されたDbContextオブジェクトへの参照を含むモデルクラスごとにサービスクラス(データベースと通信する)を作成する必要がありますか? – SaszaKonopka

関連する問題