C# 基于实体框架的WCF服务中存储库模式的依赖注入

C# 基于实体框架的WCF服务中存储库模式的依赖注入,c#,entity-framework,wcf,dependency-injection,repository,C#,Entity Framework,Wcf,Dependency Injection,Repository,我有接收IRepository的WCF服务 IRepository repository; public MyWcfService(IRepository repository) { this.repository= repository; } 存储库需要基于实体框架。它有方法获取,保存,等等 我的问题是,如果每次从这个WCF服务类调用方法时都要创建和处理DbContext,那么我应该如何实现这个存储库类 另外,我正在使用Ninject库解析依赖项如果您想将数据库上下文作为存储库类的

我有接收IRepository的WCF服务

IRepository repository;

public MyWcfService(IRepository repository)
{
    this.repository= repository;
}
存储库需要基于实体框架。它有方法
获取
保存
,等等

我的问题是,如果每次从这个WCF服务类调用方法时都要创建和处理
DbContext
,那么我应该如何实现这个存储库类


另外,我正在使用Ninject库解析依赖项

如果您想将数据库上下文作为存储库类的依赖项,那么存储库类应该实现IDisposable,并且在Dispose方法中,您应该处理数据库上下文

您的存储库应该在http请求处理结束时被处置,因此您应该使用InRequestScope()注册IRepository。您还应该使用InRequestScope()注册WCF服务,使其不会超过IRepository

以下是关于InRequestScope()的文档:

ninject中对象范围之间的差异:

在WCF中使用依赖项注入有点不同。您需要连接到实例创建管道和服务主机

有一个特定的Ninject扩展可以简化这一过程:Ninject.extensions.Wcf

还有一个博客将解释如何使用它:

注意:这是一个有点牵扯,所以抱歉的链接只参考。。。其他人可以基于此自由创建完整答案