asp.net-mvc-3 – DbContext使用Ninject的InRequestScope()后第
发布时间:2020-12-16 03:37:56 所属栏目:asp.Net 来源:网络整理
导读:我是EF和Ninject的新手,请原谅我,如果这没有意义:) 我有一个带有Ninject和Ninject.Web.Common引用的MVC3应用程序.我正在尝试将DbContext注入我的存储库.我所看到的是,在第一次请求时,一切都运行良好,但后续请求返回: System.InvalidOperationException: The
我是EF和Ninject的新手,请原谅我,如果这没有意义:)
我有一个带有Ninject和Ninject.Web.Common引用的MVC3应用程序.我正在尝试将DbContext注入我的存储库.我所看到的是,在第一次请求时,一切都运行良好,但后续请求返回: System.InvalidOperationException: The operation cannot be completed because the DbContext has been disposed. at System.Data.Entity.Internal.LazyInternalContext.InitializeContext() at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression) at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source,Expression`1 predicate) 我的绑定: kernel.Bind<ISiteDataContext>().To<SiteDataContext>().InRequestScope(); kernel.Bind<IProductRepository>().To<ProductRepository>(); kernel.Bind<IProductService>().To<ProductService>(); 我的服务类: public class ProductService : IProductService { [Inject] public IProductRepository repository {get; set;} ... } 我的存储库类: public class ProductRepository : IProductRepository { [Inject] public ISiteDataContext context {get; set;} ... } 我的SiteDataContext类: public class SiteDataContext : DbContext,ISiteDataContext { static SiteDataContext() { Database.SetInitializer<SiteDataContext >(null); } public DbSet<Product> Products{ get; set; } protected override void Dispose(bool disposing) { base.Dispose(disposing); } } 我的控制器: public class ProductController { [Inject] public IProductService productService {get; set;} ... } 如果我删除.InRequestScope(),那么它工作正常 – 但随后会导致Entity Framework出现问题,因为在数据上下文的多个单独实例中修改了对象. 解决方法
将您的存储库设置为InRequestScope.他们应该在每次请求后处理.
同样使用MVC,您应该使用构造函数注入将存储库注入控制器实例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net核心 – ASP.NET核心 – 如何返回一个特定的状态代码
- asp.net – 无法在Page回调中调用Response Redirect?
- asp.net-mvc – MVC在会话中保存令牌
- 如何使用asp.net webapi获取Json Post Values
- asp.net-mvc – ASP.Net 5 project.json脚本命令的完整列表
- Asp.Net成员 – 实体框架4中的提供商
- 来自ASP.Net PageMethod Call的访问响应标头
- asp.net – 从ASPX中的URL检索GET变量
- asp.net-mvc-3 – 如何为MVC3生成服务和存储库层
- asp.net-mvc – Razor视图引擎.cshtml页面中的OutputCache
推荐文章
站长推荐
热点阅读