Я не совсем уверен, каков твой вопрос, но я не понимаю, где он «неправильный».Все сводится к выбору дизайна IMO.Хотите ли вы получить доступ к иерархическим данным (дочерним объектам) от каждого объекта?Если вы это делаете и хотите загрузить эти данные при первоначальной выборке, то использование одного для многих экономит время (вы можете выбрать предварительную загрузку или отложенную загрузку).В этом случае получение ваших данных в первом примере может быть полезным для вас.Вы можете использовать LINQ для фильтрации данных, чтобы вернуть только «не удаленные» результаты или «любой фильтр, который вам нужен», например так:
IList<Child> list = parent.Children.Where(x => x.Deleted == false);
Лично мне нравится держать его в чистоте, и когда яиспользуя шаблон репозитория (в последнее время я становлюсь большим поклонником шаблона ActiveRecord).Я предпочитаю разделить это на собственный вызов метода.Вы можете добавить вызов репозитория в имя свойства children, но тогда для меня такое ощущение, что я пересекаю границы между моделью и местом, где я пишу эту модель.
Но иногда я делаю это таким образомВ итоге вы получаете целую кучу методов для базовой фильтрации или глупую кучу или перегрузки для управления случаями, когда вы хотите выбрать, скажем, «Удален или нет» и «Мужской или Женский» или просто «Удален или нет».
Как я уже сказал, все сводится к выбору.Как вы хотите, чтобы ваше приложение росло, если вы думаете, что в конечном итоге вы получили список глупых перегрузок в хранилище, можете ли вы сделать его чище, чтобы будущие кодеры могли понимать ваш код, меньше кода для управления, и это не так?мешать производительности (или заставляет работать лучше в идеале).В этом случае наличие тестов поможет вам выполнить рефакторинг без нарушения кода.
Не зацикливайтесь на «правильном» или «неправильном» способе ведения дел.