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 - 就像在你的情況下一樣。首先檢查空值,然後將其分配給'部分'