2010-01-05 37 views
1

在我的項目中,我有大約10個DataContext。我的問題是我是否必須使用全局實例或在方法中創建datacontext的每個單個實例。從設計的角度來看,哪種方法(從方法1和方法2)更好。使用Multiple 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()它們是不同的數據庫,所以我必須創建兩個獨立的AppDC類? – NETQuestion 2010-01-06 04:11:05

+0

不是如果你不想。例如,DataAccessOne方法可以使用GBDataContext,DataAccessTwo方法可以使用USCDataContext。您可以根據需要在ApplicationDataContext類中引用許多不同的DataContext,但只需在代碼中引用單個AppDC.Instance。例如,要調用DataAccessOne方法:AppDC.Instance.DataAccessOne()。 – 2010-01-06 07:21:38