将 dbContext 抽象为单独的 class - Entity Framework 6
Abstracting a dbContext into a separate class - Entity Framework 6
我希望能够抽象化我的 EF6 上下文,以便创建一次并由多个 classes 使用。代码如下:
接口:
public interface IInterface<T>
{
IEnumerable<T> ExecStoredProc(string x, DateTime date,
int y, string statistics );
}
上下文 class:
public class Context
{
public readonly StatisticsEntities StatContext;
public static StatisticsRepo(StatisticsEntities statContext)
{
StatContext = statContext;
return StatContext;
}
}
Class 调用上下文 class:
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();
}
}
以下是我的问题:
是否可以抽象上下文,如果可以,这是一个很好的做法。我最担心的是处理。
通常,StatContext 将是一个私有变量,但我不能 return。如何让 StatContext 保持私有?
谢谢
我采用了不同的方法并使用了 属性 注入:
public class Context
{
//Property Injection to be used for all repo classes
private StatisticsEntities _statContext = new StatisticsEntities();
public StatisticsEntities StatContext { get; set; }
}
然后我在调用 class 中添加了一个 try catch finally 块来处理上下文。
我希望能够抽象化我的 EF6 上下文,以便创建一次并由多个 classes 使用。代码如下:
接口:
public interface IInterface<T>
{
IEnumerable<T> ExecStoredProc(string x, DateTime date,
int y, string statistics );
}
上下文 class:
public class Context
{
public readonly StatisticsEntities StatContext;
public static StatisticsRepo(StatisticsEntities statContext)
{
StatContext = statContext;
return StatContext;
}
}
Class 调用上下文 class:
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();
}
}
以下是我的问题:
是否可以抽象上下文,如果可以,这是一个很好的做法。我最担心的是处理。
通常,StatContext 将是一个私有变量,但我不能 return。如何让 StatContext 保持私有?
谢谢
我采用了不同的方法并使用了 属性 注入:
public class Context
{
//Property Injection to be used for all repo classes
private StatisticsEntities _statContext = new StatisticsEntities();
public StatisticsEntities StatContext { get; set; }
}
然后我在调用 class 中添加了一个 try catch finally 块来处理上下文。