0

我正在使用 .NET Core 框架 (5.0) 开发质量保证应用程序。最初,我使用了 MS SQL Server DB,它运行良好。但是,现在由于需求变化,我现在已经转移到 MYSQL Server。

我已经使用代码优先方法(实体框架)成功地集成了数据库。此外,我正在使用 NuGet 包Pomelo.EntityFrameworkCore.MySql并且一切正常,除了下面提到的 Linq 查询,我遇到异常 - 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 Query 而不是实际的 SQL Join。任何帮助,将不胜感激!

4

2 回答 2

-1

您可以ToList()在 linq 查询末尾添加,它应该可以解决问题:

var products = _db.Products.Where(q => q.ProductName.ToLower() == product.ProductName.ToLower())
                           .Select(e => e.ProductId).ToList();
于 2021-05-19T10:57:35.077 回答
-1

添加Tolist()以获取外部产品for将立即执行查询并允许内部连接可用于for获取项目

于 2021-10-13T22:02:51.063 回答