にナビゲーションプロパティを使用せずに、複数のテーブルを結合します。は、どのように私は<strong>ASP.NET MVC3</strong>アプリケーションを持っているのC#
私は、次の 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}
方法はただEFオブジェクトを返す私のリポジトリ(原因についても同様の方法)
IQueryable<Problem> GetProblemsById(string problemId)
を は今私のサービス層に私は、オブジェクトを作成する必要がありますSolvedProblems
には、ProblemIdとCauseIdの他のフィールドが含まれていなければなりません。もちろん、それらは関連している必要があります(ProblemCause
による)。私は、ナビゲーションプロパティを使用していないので、私のサービス層からの私は(彼らはちょうどリポジトリに使用されている)ProblemCause
表「を参照してください。」ことができません。を反復しながら、
IQueryable<Cause> GetProblemsByCauseId(string causeId)
そしてProblemCause
を入力します。したがって、私は、メソッドを作成することができます。しかし、2つのテーブル(+関連)の代わりに、3つ以上のテーブルが相互に接続されているとしますか?それは、このネストされたサイクルを作るか(私は、ナビゲーションプロパティを使用することができます)リポジトリにすべてのロジックを持ってしてService
にSolvedProblems
を返す価値がありますか?
ありがとうございます!良い方法は、基本的にDBビューを含むEF名前空間内にSolvedProblemsクラスを作成することでしょうか?もちろん、このクラスはリポジトリ内のメソッドによって実装され、アプリケーションレベルでの結合をperofrmします – CiccioMiami