我正在为EF 4.2代码第一次工作,并且已经获得了很多随机上下文连接问题,并且想知道如果您能够关注此实现,然后拍我的手腕来做这件事是错误的(如果它是错误的)EntityFramework上下文实现错误?
我为这个项目开发了一个存储库模式。
我相信我做的方式是问题,但无论如何,这里是代码:
境提供
public class ContextProvider
{
private static MyContext context;
public static MyContext Context
{
get
{
if (context == null)
{
context = new MyContext();
}
Database.SetInitializer<MyContext>(null);
//create the DB if it doesn't exist
if (!context.Database.Exists())
{
context.Database.Create();
context = new MyContext();
}
return context;
}
}
}
这里是我的仓库:
public class DataRepository
{
protected MyContext Context;
public DataRepository(MyContext context = null)
{
Context = context ?? ContextProvider.Context;
}
public ProviderBase<Foo> FooProvider { get { return new ProviderBase<Foo>(); } }
public ProviderBase<Bah> BahProvider { get { return new ProviderBase<Bah>(); } }
}
的ProviderBase类
public class ProviderBase<T> : IProviderBase<T> where T : BaseClass
{
public Boolean UseCaching { get; set; }
public MyContext Context;
public ProviderBase(Boolean useCaching = true, MyContext context = null)
{
Context = context ?? ContextProvider.Context;
UseCaching = useCaching;
}
#region Implementation of IProviderBase<T>
protected DbSet<T> DbSet
{
get
{
return Context.Set<T>();
}
}
... methods here for CRUD ....
}
我认为问题是静态的上下文,我说得对吗?如果是的话,解决方案是什么?
http://stackoverflow.com/search?q=static+objectcontext – 2012-03-15 13:53:00
@ Craig感谢您展示如何使用SO的搜索功能,但我非常了解它。我已经阅读了数百篇关于SO和其他站点的文章,但是我对于解决我的问题感到茫然,因此我发布了这个问题。建设性回复比仅仅发布链接更有帮助... – JamesStuddart 2012-03-15 13:56:11
您正在构建什么类型的应用程序? – 2012-03-15 14:13:50