0

Я немного программист junio, поэтому мне нужно это понять. Я использую EntityFramework 5. У нас есть класс репозитория, который наследует DbContext. При вызове метода FirstOrDefault, если нет значения для возврата, EntityFramework закрывает соединение. Это делает кодовый тормоз, жалуясь, что dbContext.Database.Connection.ServerVersion имеет значение NULL. На самом деле состояние соединений «Закрыто». Я фактически внедряю репозиторий для тестирования службы без использования 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/веб-служба, а на самом деле логика, которая делает всю магию) - это приложение MVC.

ответ

2

FirstorDefault возвращает null, когда нет значений - как в случае с уром. Сначала проверьте значение null, а затем назначьте его «part»

Смежные вопросы