EFCore 连接MySQL数据库查询数据提示This MySqlConnection is already in use
EFCore 连接数据查询数据提示"This MySqlConnection is already in use"代码如下

using (MyDBContext db =new MyDBContext()) { Order order= db.Orders.Single(o => o.Id==2); printChildren(1, db, order); } static void printChildren(int depLevel,MyDBContext ctx,Order ou) { var children = ctx.Orders.Where(o => o.Parent == ou); foreach (var child in children) { Console.WriteLine(new String('\t', depLevel) + child.Name); //递归 printChildren(depLevel + 1, ctx, child); } }
代码中的var children = ctx.Orders.Where(o => o.Parent == ou)只是将代码转换为SQL语句,返回的结果为IQueryable类型集合,结果会延迟加载,这时候再去递归查询会提示连接已经被使用。
将代码改为var children = ctx.Orders.Where(o => o.Parent == ou).ToList()返回的类型是IEnumerable类型集合是将数据加载到本地内存中