Как объединить несколько таблиц без использования свойств навигации в C # - PullRequest
0 голосов
/ 14 марта 2012

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

My Хранилище * Методы 1013 * просто возвращают объекты EF (тот же метод для причины)

IQueryable<Problem> GetProblemsById(string problemId)

Теперь в моем слое Service я должен создать объект SolvedProblems, который должен содержать, среди прочих полей, ProblemId и CauseId и, конечно, они должны быть связаны (согласно ProblemCause) , Из моего слоя службы я не могу "увидеть" таблицу ProblemCause, потому что я не использую свойства навигации (они используются только в хранилище ). Поэтому я могу создать метод:

IQueryable<Cause> GetProblemsByCauseId(string causeId)

И заполните ProblemCause, перебирая Problems. Однако, если вместо двух таблиц (+ ассоциация) у меня есть 3 или более таблиц взаимосвязаны? Стоит ли делать эти вложенные циклы или перенести всю логику в репозиторий (где я могу использовать свойства навигации) и вернуть SolvedProblems в Service?

1 Ответ

0 голосов
/ 14 марта 2012

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

...