There is already an open DataReader associated with this Command which must be closed first

Thảo luận trong 'Lập Trình Website MVC5 & MVC6' bắt đầu bởi seolagi, 21/5/21.

  1. seolagi

    seolagi

    Moderator

    Thành viên BQT

    Tham gia ngày:
    16/4/14
    Bài viết:
    805
    Đã được thích:
    69
    Điểm thành tích:
    28
    Lỗi khi lấy dữ liệu từ linq nhiều lần: There is already an open DataReader associated with this Command which must be closed first.

    Khi mình lấy dữ liệu xử lý add thì bị lỗi dữ liệu như trên, mình không biết làm sao để xử lý nếu không vượt qua được lỗi này.

    Bạn nào biết cách xử lý giúp mình với:
    Code của mình:
    Mã:
    var modelcate = dbc.Categories.Where(p=> p.Id == null);
    //danh sách chuyên mục liên kết
    foreach (var cate in dbc.Categories.Where(s => s.Action).OrderByDescending(p => p.Seq))
    {
        var itemName = "";
        itemName = modelcate.Where(c => c.Type == cate.Type).FirstOrDefault().Name; //error tại đây
        .......
    }
     
    Cảm ơn đã xem bài:

    There is already an open DataReader associated with this Command which must be closed first

  2. admin

    admin Phạm Công Sơn Thành viên BQT

    Tham gia ngày:
    22/5/13
    Bài viết:
    4,474
    Đã được thích:
    1,076
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Của bạn không phải lỗi mà do bạn truy xuất dữ liệu không đúng cách thôi. Bạn xử lý lại code bằng cách truy xuất lấy dữ liệu dạng ToList() là được ngay.

    Sửa lại code như sau:
    Mã:
    var modelcate = dbc.Categories.Where(p=> p.Id == null);
    //danh sách chuyên mục liên kết
    foreach (var cate in dbc.Categories.Where(s => s.Action).OrderByDescending(p => p.Seq).ToList())
    {
        var itemName = "";
        itemName = modelcate.Where(c => c.Type == cate.Type).FirstOrDefault().Name; //error tại đây
        .......
    }
     
  3. seolagi

    seolagi

    Moderator

    Thành viên BQT

    Tham gia ngày:
    16/4/14
    Bài viết:
    805
    Đã được thích:
    69
    Điểm thành tích:
    28
    Em cảm ơn, em không biết cái này luôn ạ, em đã làm được, cảm ơn ad rất nhiều
     


Like và Share ủng hộ ITSEOVN