【发布时间】:2014-01-29 20:36:48
【问题描述】:
我使用 MVC5/EF6 创建了一个站点,并使用 Ninject 作为 DI 容器将其绑定在一起。
除了在一个页面上,我同时进行 2 个 ajax 调用之外,一切都运行良好。
控制器/存储库吐出各种错误,例如:
“在 mscorlib.dll 中发生了“System.Data.Entity.Core.EntityException”类型的第一次机会异常。附加信息:底层提供程序在打开时失败。”
对 api 的一次调用将始终有效,第二次则间歇性地工作。如果我直接在控制器中创建数据上下文,一切正常,所以错误必须与 Ninject 有关,但我无法弄清楚我需要做些什么来对其进行排序。将范围更改为 Transient/Thread 只会更改错误。
非常感谢任何帮助。
这是我的(编辑过的)代码:
从 Global.asax Application_Start() 调用
var context = new myDataContext();
// Lowest down wins
IKernel kernel = new StandardKernel();
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
GlobalConfiguration.Configuration.DependencyResolver
= new App_Start.NinjectResolver(kernel);
kernel.Bind<IRepository<Models.MyClass>>()
.To<MyRepository>()
//.InTransientScope()
//.InThreadScope()
.InRequestScope()
.WithConstructorArgument("context", context);
API 控制器
public class MyApiController : ApiController
{
IRepository<MyRepository> _repository;
public EMAAFController(IRepository<MyRepository> repository)
{
_repository = repository;
}
public IEnumerable<Models.MyClass> Get(int id)
{
var itemToReturn = _repository.GetAll().Where(i => i.id == id).ToList();
return itemToReturn;
}
}
【问题讨论】:
标签: c# asp.net-mvc entity-framework ninject asp.net-mvc-5