Tôi đã kiểm soát một số mã khung thực thể và đang tìm cách cấu trúc lại nó. Trước khi tôi làm, tôi muốn kiểm tra suy nghĩ của mình là chính xác và tôi không bỏ lỡ cách thực hiện khuôn khổ thực thể.Tái cấu trúc lớp dữ liệu
Ví dụ 1 - Subquery vs Tham
Ở đây chúng ta có một one-to-many giữa A và B. Ngoài các mã dưới đây là khó đọc, nó cũng không hiệu quả?
from a in dataContext.As
where ((from b in dataContext.Bs
where b.Text.StartsWith(searchText)
select b.AId).Distinct()).Contains(a.Id)
select a
Sẽ tốt hơn, ví dụ: sử dụng tham gia và làm điều gì đó như thế này?
from a in dataContext.As
where a.Bs.Any(b => b.Text.StartsWith(searchText))
select a
Ví dụ 2 - Explicit tham gia vs Navigation
Ở đây chúng ta có một one-to-many giữa A và B và một one-to-many giữa Bs và Cs.
from a in dataContext.As
join b in dataContext.Bs on b.AId equals a.Id
join c in dataContext.Cs on c.BId equals b.Id
where c.SomeValue equals searchValue
select a
Có lý do chính đáng để sử dụng kết nối rõ ràng thay vì điều hướng qua mô hình dữ liệu không? Ví dụ:
from a in dataContext.As
where a.Bs.Any(b => b.Cs.Any(c => c.SomeValue == searchValue)
select a
Cảm ơn bạn đã dành thời gian trả lời. – Joey