эффективный способ использования Multiple DataContext - PullRequest
1 голос
/ 06 января 2010

В моем проекте у меня около 10 DataContext. Мой вопрос заключается в том, должен ли я использовать глобальный экземпляр или создавать каждый отдельный экземпляр datacontext в методе. Какой из методов (из method1 и method2) лучше с точки зрения дизайна.

public class Database
{

    USDataContext USDB = new USCDataContext();

    //Method 1 Global instance
    public void update US_CountryTable()
    {
        USDB.updateCountryTable();
    }

    // Method 2 individual instance
      public void Update CountryTable(string country)
      {
         switch (country)
        {
            case:GB
                GBDataContext GBDB = new GBCDataContext();
                GBDB.updateCountryTable();

                // Some suggest this may be helpful
                // using (GBDataContext  dbContext = new GBDataContext ())
                // { GBDB.updateCountryTable();
                // }
             break;
             case: US
                USDataContext USDB = new USCDataContext();
                USDB.updateCountryTable();
             break;
        } 

      }
}

Спасибо

1 Ответ

0 голосов
/ 06 января 2010

Я бы на самом деле использовал комбинацию двух подходов. Я бы использовал класс Singleton, чтобы разрешить доступ к центральному объекту-обработчику DataContext, и вторичный класс, который содержал отдельные методы доступа к данным. Я также реализовал бы использование блоков, чтобы удостовериться, что мой DataContext был инициализирован и очищен заново при каждом запросе.

public sealed class AppDC
{
    static readonly ApplicationDataContext _Instance = new ApplicationDataContext();

    static AppDC()
    {
    }

    AppDC()
    {
    }

    public static ApplicationDataContext Instance
    {
        get { return _Instance; }
    }
}

public static class ApplicationDataContext
{
    public static void DataAccessOne()
    {
        using (DataContext dc = new DataContext())
        {
            ...
        }
    }

    public static void DataAccessTwo()
    {
        using (DataContext dc = new DataContext())
        {
            ...
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...