【发布时间】:2011-09-21 11:49:08
【问题描述】:
我正在构建一个在单例模式中使用 EF 上下文的应用程序,例如 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 可以更详细地解释我?
【问题讨论】:
-
您是否仅阅读过这是不好的做法?不解释?
标签: c# .net entity-framework entity-framework-4 ninject