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