Tôi đã LINQ sau to Entities truy vấn trong đó có nhiều truy vấn con để có được một số dữ liệu tổng hợp:Refactor LINQ to SQL/Đối tượng truy vấn với nhiều truy vấn con
var systems = from s in db.Systems
orderby s.Name
select new SystemSummary
{
Id = s.Id,
Code = s.Code,
Name = s.Name,
LastException = (
from a in s.Applications
from e in a.Summaries
select e.CreationDate
).Max(),
TodaysExceptions = (
from a in s.Applications
from e in a.Summaries
where e.CreationDate >= today && e.CreationDate < tomorrow
select e
).Count(),
/* SNIP - 10-15 more subqueries */
};
tôi rút ngắn lên truy vấn để chỉ bao gồm 2 của truy vấn con , nhưng có thể có khoảng 10-15 người trong số họ. Có cách nào tôi có thể refactor truy vấn để làm sạch mã? Tôi không tìm kiếm sự gia tăng hiệu suất. Tôi muốn chỉ làm sạch mã bằng cách đặt các truy vấn phụ vào các phương thức riêng biệt trong khi vẫn đảm bảo rằng đó là một cuộc gọi duy nhất đến cơ sở dữ liệu. Điều này có thể không?
Nếu bạn muốn có mã sạch hơn, bạn có thể cân nhắc việc tạo một quy trình được lưu trữ trong cơ sở dữ liệu của mình – Mathieu
@Mathieu Đó có phải là cách duy nhất không? – Dismissile