После оператора linq генерирует несколько поездок в базу данных, есть ли способ изменить это так, чтобы он делал это за одну поездку?
db.Members.Distinct().Select(
m => new {
Id = m.Id,
PlayTimeSchedules = m.PlayTimeSchedules.Select(pts => pts.DayOfWeek) }
).ToList();
К вашему сведению: в этом примере Distinct избыточен.
Существует отношение один-ко-многим между участником и его PlayTimeSchedule
Я ожидаю, что будет сгенерировано что-то вроде следующего:
select distinct(Members.Id), PlayTimeSchedule.DayOfWeek from Members
join PlayTimeSchedule on PlayTimeSchedule.MemberId = Members.Id
или я застрял при создании представления, еслиЯ хочу, чтобы это было сделано за одну поездку?
РЕДАКТИРОВАТЬ: Вот что выше генерирует linq (я добавил. Возьмите (20) для краткости):
SELECT TOP (20) [t1].[Id]
FROM (
SELECT DISTINCT [t0].[Id], [t0].[EMail], [t0].[Username], [t0].[Password], [t0].[GmtOffset], [t0].[LastSeen], [t0].[Notifications], [t0].[EMailVer
ified], [t0].[ObserveDst], [t0].[Admin], [t0].[AttendedRaidCount], [t0].[MissedRaidCount], [t0].[LedRaidCount], [t0].[CommittedRaidCount]
FROM [dbo].[Members] AS [t0]
) AS [t1]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.1
SELECT [t0].[DayOfWeek]
FROM [dbo].[PlayTimeSchedule] AS [t0]
WHERE [t0].[MemberId] = @x1
-- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [1]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.1
SELECT [t0].[DayOfWeek]
FROM [dbo].[PlayTimeSchedule] AS [t0]
WHERE [t0].[MemberId] = @x1
-- @x1: Input Int (Size = 0; Prec = 0; Scale = 0) [2]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.1
+++ 18 more DayOfWeek selections as above