我试图使用Ninject和OpenAccess的首次。 请帮我用下面的。 这里是我的项目看起来像...
public class ContentController : Controller
{
private ContentService contentSvc;
public ContentController(ContentService contentSvc)
{
this.contentSvc = contentSvc;
}
}
下面的类是在我的web应用程序的文件夹下。
public class ContentService
{
private IContentRepository contentRepository;
public ContentService(IContentRepository contentRepository)
{
this.contentRepository = contentRepository;
}
public void InsertContent(Content content)
{
contentRepository.InsertContent(content);
}
}
下面库属于一个单独的组件。
public class ContentRepository : IContentRepository
{
DBContext db;
public ContentRepository(DBContext _db)
{
db = _db;
}
public void InsertContent(Content content)
{
db.Add(content);
}
}
以下是Ninject结合样子..
kernel.Bind<ContentService>().To<ContentService>().InRequestScope();
kernel.Bind<IContentRepository>().To<ContentRepository>().InRequestScope().WithConstructorArgument("_db", new DBContext());
如果我在一个时间内获取一个网页一切正常。 我用一个简单的工具“的Xenu”同时获取多个页面。 这是当我通过一次读取多个页面出现错误使用的DbContext。
我不知道如果Ninject在每个请求dosposing中的DbContext? 我得到不同的错误,如“未设置为一个对象的实例对象引用。”,或“ExecuteReader需要一个开放和可用的连接。 该连接的当前状态是开放的。”
PS
我在我的MVC的Web应用程序文件夹下contentService的。 ContentRepository是一个单独的组件。 我会在被contentService的添加业务逻辑和只能使用CRUD操作“ContentRepository”。 另外,请让我知道,如果这个结构是正确的,或者是有没有更好的方式来创建服务和存储库。