WCF服务中使用实体框架的存储库模式的依赖项注入
本文关键字:存储 模式 依赖 注入 框架 服务 实体 WCF | 更新日期: 2023-09-27 18:00:49
我有接受IRepository的WCF服务。
IRepository repository;
public MyWcfService(IRepository repository)
{
this.repository= repository;
}
存储库需要基于实体框架。它有Get
、Save
等方法…
我的问题是,如果我想在每次从这个WCF服务类调用方法时创建和处理DbContext
,我应该如何实现这个存储库类。
附言:我正在使用Ninject库来解析依赖项
如果您想将数据库上下文作为存储库类的依赖项,那么存储库类应该实现IDisposable,并且在Dispose方法中,您应该处理数据库上下文。
您的存储库应该在http请求处理结束时被处理,因此您应该使用InRequestScope((注册IRepository。您还应该使用InRequestScope((注册WCF服务,这样它就不会超过IRepository。
以下是InRequestScope((的文档:
https://github.com/ninject/Ninject.Web.Common/wiki/InRequestScope
以及ninject中对象作用域之间的差异:
https://github.com/ninject/ninject/wiki/Object-Scopes
在WCF中使用依赖项注入有点不同。您需要挂接到实例创建管道和服务主机中。
有一个特定的Ninject扩展可以让这更容易:Ninject.extensions.Wcf
https://github.com/ninject/Ninject.Extensions.Wcf
还有这个博客将解释如何使用它:
http://blog.tonysneed.com/2011/10/24/using-ninject-with-wcf-services/
注意:这有点涉及,所以很抱歉链接仅引用。。。其他人可以在此基础上自由创建完整的答案。