簡體   English   中英

例外 - 使用 MYSql 服務器時“此 MySqlConnection 已在使用中”。 然而,同樣的 Linq 查詢可以在 MS SQL 服務器上正常工作

[英]Exception - "This MySqlConnection is already in use" when using MYSql server. However the same Linq query works fine with MS SQL Server

我正在使用 .NET 核心框架 (5.0) 開發質量保證應用程序。 最初,我使用了 MS SQL 服務器數據庫,它工作正常。 但是,現在由於需求變化,我現在已經轉移到 MYSQL 服務器。

我已經使用代碼優先方法(實體框架)成功地集成了數據庫。 Also, I am using the NuGet package Pomelo.EntityFrameworkCore.MySql and everything works just fine except the below-mentioned Linq query where I am getting an exception - This MySqlConnection is already in use .

public List<ErrorMessage> GetErrorMessage(int productId)
{
    List<ErrorMessage> localList = new List<ErrorMessage>();
    var product = _db.Products.Where(a => a.ProductId == productId).FirstOrDefault();
    if (product != null)
    {

        var products = _db.Products
            .Where(q => q.ProductName.ToLower() == product.ProductName.ToLower()).Select(e => e.ProductId);
        foreach (var item in products)
        {
            var errormessage = _db.ErrorMessageTracks.Where(q => q.ProductId == item).Select(e => e.ErrorMessage);
            foreach (var msg in errormessage)
            {
                if (!localList.Select(q => q.ErrorMessageId).Contains(msg.ErrorMessageId))
                {

                    localList.Add(msg);
                }
            }
        }

    }
    return localList;
}

我已經提到了其他類似的問題,但我無法解決問題,因為我不確定如何關閉 SQL 連接,因為我使用的是 Linq 查詢而不是實際的 Z9778840A0100CB30C5828767A2ZB0 連接。 任何幫助,將不勝感激!

您可以在 linq 查詢的末尾添加ToList() ,它應該可以解決問題:

var products = _db.Products.Where(q => q.ProductName.ToLower() == product.ProductName.ToLower())
                           .Select(e => e.ProductId).ToList();

添加Tolist()以獲取外部for產品將立即執行查詢並允許內部for獲取項目的連接。

阿齊茲給出的答案是正確的,不應該被否決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM