繁体   English   中英

EntityFramework DBContext FirstOrDefault关闭连接

[英]EntityFramework DBContext FirstOrDefault closes connection

我有点像junio程序员,所以我需要理解这一点。 我正在使用EntityFramework 5.我们实现了一个存储库类,它继承了DbContext。 调用FirstOrDefault方法时,如果没有要返回的值,EntityFramework将关闭连接。 这使得代码制动,抱怨dbContext.Database.Connection.ServerVersion为null。 事实上,连接状态是“已关闭”。 我实际上是在不使用Ninject之类的情况下注入存储库来测试服务。 这是为什么会发生这种情况?

这是我注入存储库的地方:

IRepository<stock_queues> repo = new DbContextRepositoryEcom<stock_queues>(new DbContextFactory<eComEntities>(new eComEntities()));

        StockFlashService service = new StockFlashService(repo, new PartsService(), new UserService());

        service.AddToStockFlashQueue("asfsdfgvsdf");

这是我实际运行代码的地方(在不同的项目中):

  public StockFlashService(IRepository<stock_queues> queues, IPartsService parts, IUserService users)                     
    {
        this._QueuesRepo = queues;          
        this._PartsService = parts;
        _UsersService = users;
      //  userId = _UsersService.GetUser().UserId;
        userId = 30; //FOR TESTING ONLY !!
    }

 public void AddToStockFlashQueue(string key)
    {            
        stock_queues sq = new stock_queues();
        sq.partnumber = key;
        sq.userID = userId;
        sq.timestamp = DateTime.Now;

        // Adds new entry to Stock Flash queue (if required)
        stock_queues part;
        int count = _QueuesRepo.Count();
        if (_QueuesRepo.Count() > 0)
        {               
            part = _QueuesRepo.FirstOrDefault(f => f.userID == sq.userID && f.partnumber == sq.partnumber); // THIS IS WERE IT ALL BRAKES

        }
}

我正在使用控制台应用程序来测试服务并注入依赖项。 该项目是这个服务托管(不是一个Windows / Web服务,但实际上所有神奇的逻辑)是一个MVC应用程序。

当没有值时,FirstorDefault返回null - 就像你的情况一样。 首先检查null,然后将其分配给'part'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM