簡體   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