Сначала я работаю над кодом EF 4.2, и у меня возникает множество случайных проблем с подключением к контексту, и я удивляюсь, можно ли взглянуть на эту реализацию, а затем дать мне пощечину за неправильную работу (если это неправильно, то это)
Я разработал шаблон хранилища для этого проекта.
Я уверен, что проблема в том, как я это делаю, но в любом случае вот код:
КонтекстПровайдер
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 ....
}
Я думаю, что проблема в статическом контексте, я прав?и если да, то каково решение?