![](/img/trans.png)
[英]This MySqlConnection is already in use for .net with MySQL
[英]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.