Как присоединиться к нескольким таблицам без использования свойств навигации в С#

У меня есть приложение 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?


person CiccioMiami    schedule 14.03.2012    source источник


Ответы (1)


Если это просто простые соединения, я думаю, что самый простой способ решить эту проблему — создать представление в вашей базе данных и сопоставить SolvedProblems с ним в EF.

person Steve Danner    schedule 14.03.2012
comment
Спасибо! Хорошей альтернативой может быть создание класса SolvedProblems в пространстве имен EF, который в основном содержит представление БД? Конечно, этот класс заполняется методом в репозитории, который выполняет соединения на уровне приложения. - person CiccioMiami; 15.03.2012