将dbContext抽象为单独的类 - 实体框架6

时间:2017-01-18 02:13:24

标签: c# interface entity-framework-6 abstraction

我希望能够抽象我的EF6上下文,以便创建一次并由多个类使用。代码如下:

接口:

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保密?

  3. 谢谢

1 个答案:

答案 0 :(得分:0)

我采用了不同的方法并使用了属性注入:

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

然后我在调用类中添加了一个try catch finally块来处理上下文。