2010-01-05 2 views
1

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

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; 
     } 

     } 
} 

Благодаря

ответ

0

Я бы на самом деле использовать сочетание этих двух подходов. Я бы использовал класс 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()) 
     { 
      ... 
     } 
    } 
} 
+0

GBDataContext и USCDataContext() они являются базами данных diff, поэтому мне нужно создать два отдельных класса AppDC? – NETQuestion

+0

Нет, если вы этого не хотите. Например, метод DataAccessOne может использовать GBDataContext, а метод DataAccessTwo может быть USCDataContext. Вы можете ссылаться столько разных DataContexts, сколько пожелаете в классе ApplicationDataContext, но вам нужно указывать только одно приложение AppDC.Instance в вашем коде. Например, для вызова метода DataAccessOne: AppDC.Instance.DataAccessOne(). –

Смежные вопросы