Я создаю приложение, которое использует Context of EF в Singleton Pattern, как NHibernate, работает с Session:
public class DbContextFactory
{
private static volatile DbContextFactory _dbContextFactory;
private static readonly object SyncRoot = new Object();
public DbContext Context;
public static DbContextFactory Instance
{
get
{
if (_dbContextFactory == null)
{
lock (SyncRoot)
{
if (_dbContextFactory == null)
_dbContextFactory = new DbContextFactory();
}
}
return _dbContextFactory;
}
}
public DbContext GetOrCreateContext()
{
if (this.Context == null)
this.Context = new DbContext(ConfigurationManager.AppSettings["DefaultConnectionString"]);
return Context;
}
}
Я использую Ninject для добавления контекста:
public class DbContextModule : NinjectModule
{
public override void Load()
{
Bind<IDbContext>().ToConstant(DbContextFactory.Instance.GetOrCreateContext());
}
}
Я читаю об этом подходе, и некоторые люди говорят, что это плохая практика, и у меня будут проблемы.
Кто-то, кто знает об этом с EF, может объяснить мне более подробно?