我将 Ninject 与 MVC 应用程序一起使用,也使用 EF4.1 Code First。尝试测试是否可以从两个不同的浏览器实例发出请求时遇到问题。
基本上,如果我大致同时在两个浏览器上登录,我会收到一个错误消息,告诉我“在创建模型时无法使用上下文”。
现在,我的第一个假设是我有冲突的实例,因此没有正确设置上下文的范围。
我有一个包含必要表的基类上下文,我从中继承。然后我有一个注入的工厂,并在我请求我的存储库时负责实际创建上下文。
public class ContextFactory
{
TContext Create<TContext>( )
}
我需要这样做,因为我的连接字符串是在运行时决定的,所以我不能只使用 web.config 中包含的连接字符串
public class Repository : BaseRepository<MyObject>
{
public Repository(IContextFactory factory) : base(factory)
{
}
}
这个想法是当我需要我的存储库时,我注入存储库,它有自己的注入,创建它的上下文,我可以提供一些默认实现。
我的下一个担心是我没有正确关闭或销毁某些实例。我已经使用其他人的示例在会话范围内设置某些对象数据,但大多数我尝试使用 OnRequestScope。