У меня есть приложение ASP.NET MVC3.
В моем приложении есть следующие классы EF (hasCauses и isOfProblems — свойства навигации):
Problem {string ProblemId, string ProblemName, string ProblemDesc, bool solved, hasCauses}
Cause {string CauseId, string CauseName, string CauseDesc, isOfProblems}
ProblemCause {string ProblemId, string CauseId}
Мои методы Repository просто возвращают объекты EF (тот же метод для причины)
IQueryable<Problem> GetProblemsById(string problemId)
Теперь в моем слое Service я должен создать объект SolvedProblems, который должен содержать, помимо других полей, ProblemId и CauseId, и, конечно же, они должны быть связаны (согласно ProblemCause). Из моего уровня Сервис я не могу "видеть" ProblemCause таблицу, потому что я не использую свойства навигации (они используются только в Репозитории). Поэтому я могу создать метод:
IQueryable<Cause> GetProblemsByCauseId(string causeId)
И заполните ProblemCause, перебирая Problems. Однако, если вместо двух таблиц (+ ассоциация) у меня 3 или более таблиц, связанных между собой? Стоит ли делать эти вложенные циклы или всю логику вынести в Репозиторий (где можно использовать свойства навигации) и вернуть SolvedProblems в Service?