2017-01-18 42 views
0

Я хочу, чтобы иметь возможность абстрагировать мой контекст EF6, чтобы он был создан один раз и использовался несколькими классами. Код следующим образом:Реферат dbContext в отдельный класс - Entity Framework 6

Интерфейс:

public interface IInterface<T> 
{ 
    IEnumerable<T> ExecStoredProc(string x, DateTime date, 
      int y, string statistics); 
} 

класс Контекст:

public class Context 
{ 
    public readonly StatisticsEntities StatContext; 

    public static StatisticsRepo(StatisticsEntities statContext) 
    { 
     StatContext = statContext; 
     return StatContext; 
    } 
} 

Класс, который вызывает Context класс:

public class Class2: Iinterface<Class2Type> 
{ 
    var returnContext = context.StatisticsEntities(); 

    public IEnumerable<Class2Type> ExecStoredProc(string x, DateTime date, 
      int y, string statistics) 
      { 
       return returnContext.ExecMethod_Select(x,date,y,statistics).AsEnumerable(); 
      } 

} 

Ниже приведены мои вопросы:

  1. Является ли абстрагирование контекста возможным, и если это так, то это хорошая практика. Моя самая большая проблема - удаление.

  2. Обычно StatContext будет частной переменной, но я не могу вернуть это. Как сохранить статус StatContext?

Благодаря

ответ

0

я взял другой подход и используются инъекцию свойства:

public class Context 
    { 
     //Property Injection to be used for all repo classes 
     private StatisticsEntities _statContext = new StatisticsEntities(); 
     public StatisticsEntities StatContext { get; set; } 
    } 

Затем я добавил попробовать поймать, наконец, блок в классе вызывающего распоряжаться контекст.