Решение Xelibrion является правильным способом решения проблемы.
Чтобы понять, почему результаты дублируются при выполнении Fetch
, вы можете сравнить сгенерированный SQL:
Без Fetch
поля в SELECT
- это просто ваши корневые сущности Task
поля.
С Fetch
поля PersonalReminder
сущностей были добавлены к SELECT
.Таким образом, если у вас есть два PersonalReminder
регистра для одного и того же Task
, вы получите два регистра в результатах, и предложение DISTINCT
не удалит их (поскольку реальные возвращаемые регистры отличаются, поскольку они содержат поля PersonalReminder
).
SQL, сгенерированный с TransformUsing
и без него, точно такой же, но NH обрабатывает возвращенные регистры для удаления дубликатов.