0

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

这是我注入库:

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"); 

,这是我acotually运行的代码(在不同的项目):

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应用程序。

回答

2

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