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 :
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.
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 ạ
Join trong asp.net mvc
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.