Join trong asp.net mvc

Chào các bác!! Các member pro IT.
Mình tên Ken đang làm 1 dự án Quản lý Ký túc xá asp.net mvc.
Mình có tạo lớp Model liên kết 6 bảng như sau : image
Và bên controller mình dùng như hình, nhưng mình liên kết mấy bảng kia không được, join ở đây chỉ có 2 bảng thôi, mình mong các cao nhân chỉ giáo.
image
Mình xin chân thành cảm ơn, gà mờ về asp.net mvc nên lên đây mong các bạn hướng dẫn ạ

Mình gợi ý cho bạn 2 cách tiếp cận.

  • Cách 1. Dùng join. Bản chất db.Hoadons là 1 IEnumerable và method Join cũng trả về 1 IEnumerable. nên bạn có tể dùng nối tiếp các method Join
db.Hoadons.Join(
    db.Canbos, h => h.Id_canBo, c => c.Id, 
    (h, c) =>  new  {
        idCongToDien = h.IdCongToDien, // Giữ lại id cho lần join sau
        idCongToNuoc = h.IdCongToNuoc,
        idDonGia = h.idDonGia,
        idPhong = h.idPhong
        Canbo = new {
            maCB = c.MaCB,
            NgayLap = h.NgayLap,
            ThangGhiSo = h.ThangGhiSo
        }
    })
    .Join (db.DonGias, h => h.idDonGia, d => d.Id,
    (h, d) => new {
        idCongToDien = h.idCongToDien,
        idCongToNuoc = h.idCongToNuoc,
        idPhong = h.idPhong,
        Canbo = h.Canbo,
        DonGia = new {
            DonGia = d.DonGia,
            NgayLap = d.NgayLap,
            ThangGhiSo = d.ThangGhiSo
        }
    })
    .Join (db.Phongs, h => h.idPhong, p => p.Id,
    (h, p) => new {
        idCongToDien = h.idCongToDien,
        idCongToNuoc = h.idCongToNuoc,
        Canbo = h.Canbo,
        DonGia = h.DonGia,
        Phong = new {
            maPhong = p.MaPhong,
            NgayLap = p.NgayLap,
            ThangGhiSo = p.ThangGhiSo
        }
    })
    .Join (db.CongToDiens, h => h.idCongToDien, c => c.Id,
    (h, c) => new {
        idCongToNuoc = h.idCongToNuoc,
        Canbo = h.Canbo,
        DonGia = h.DonGia,
        Phong = h.Phong,
        CongToDien = new {
            maCongTo = c.MaCongTo,
            NgayLap = c.NgayLap,
            ThangGhiSo = c.ThangGhiSo
        }
    })
    .Join (db.CongToNuocs, h => h.idCongToNuoc, c => c.Id,
    (h, c) => new {
        Canbo = h.Canbo,
        DonGia = h.DonGia,
        Phong = h.Phong,
        CongToDien = h.CongToDien,
        CongToNuoc = new {
            maCongTo = c.MaCongTo,
            NgayLap = c.NgayLap,
            ThangGhiSo = c.ThangGhiSo
        }
    })
  • Cách 2. Sử dụng relationship của EF
    Nếu entity của bạn config đúng bạn có thể select mà k cần join
db.Hoadons.Select(h => new HoadonModel {
    Canbo = new Canbo {
        TenCanBo = h.Canbo.TenCanBo
        maCB = h.CanBo.MaCB,
        NgayLap = h.NgayLap,
        ThangGhiSo = h.ThangGhiSo
    },
    CongToDien = new CongToDien {
        MaCTD = h.CongToDien.MaCTD,
        TenCTD = h.CongToDien.TenCTD,
        SoDien = h.CongToDien.SoDien,
        GiaDien = h.CongToDien.GiaDien,
        NgayMua = h.CongToDien.NgayMua,
        NgayHetHan = h.CongToDien.NgayHetHan,
        TinhTrang = h.CongToDien.TinhTrang
    }
})
3 Likes

Cho mình cám ơn nhiều nha.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?