相关疑难解决方法(0)

超出范围时,Ninject不会调用对象上的Dispose

我很惊讶地发现Ninject创建的至少一个对象在请求结束时没有被处理掉,当它被定义为InRequestScope时

这是我试图处理的对象:

接口:

public interface IDataContext : IDisposable
{
    MessengerEntities context { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

MessengerEntities是Entity Framework的ObjectContext实现 - 我的上下文对象.

然后我创建一个具体的类,如下所示:

public class DataContext : IDataContext
{
    private MessengerEntities _context = new MessengerEntities();
    public MessengerEntities context
    {
        get
        {
            return _context;
        }
        set
        {
            _context = value;
        }
    }
    #region IDisposable Members

    public void Dispose()
    {
        context.Dispose();
    }

    #endregion
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个像这样的Ninject控制器工厂(这是以史蒂夫桑德森MVC 2书为蓝本):

public class NinjectControllerFactory : DefaultControllerFactory
{
    // a Ninject "kernel" is the thing that can supply object instances …
Run Code Online (Sandbox Code Playgroud)

idisposable ninject entity-framework-4 asp.net-mvc-3

25
推荐指数
1
解决办法
7598
查看次数