我有一个 ASP.Net MVC 3 照片库,它是这样设计的:
Data Repositories(IImageRepoSitory, ITagRepository etc)
|
Services (IGalleryService, IWebService etc)
|
Web Application
我使用 Ninject 将所需的服务和存储库注入到 Web 应用程序中。
在我使用实际数据库之前,我使用了一个简单的 ArrayList(和 JSON 序列化)作为我的现有逻辑(这将是 JsonImageRepository/JSonTagRepository),它工作得非常好。但是后来,我转到了EF4 CTP5(Code First),出现了很多问题。基本上,我将这些存储库和服务注入为 Singleton(在 Global.asax.cs 中声明),但是当我有多个访问存储库的线程时,它说:
数据连接已关闭。
我在 Ninject 中更改为线程模式或请求模式,但引发了各种异常(关于上下文的多个实例,所以我认为单例应该是唯一的选择)。
设计有什么问题吗?或者我应该如何配置这些组件?