2012-03-14 16 views
0

にナビゲーションプロパティを使用せずに、複数のテーブルを結合します。は、どのように私は<strong>ASP.NET MVC3</strong>アプリケーションを持っているのC#

私は、次の EFクラス( hasCausesisOfProblemsは、ナビゲーションプロパティです)持っている私のアプリケーションで

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つ以上のテーブルが相互に接続されているとしますか?それは、このネストされたサイクルを作るか(私は、ナビゲーションプロパティを使用することができます)リポジトリにすべてのロジックを持ってしてServiceSolvedProblemsを返す価値がありますか?

答えて

0

これは単純な結合であれば、これは簡単にデータベースにビューを作成し、SolvedProblemsをEFにマップすることだと思います。

+0

ありがとうございます!良い方法は、基本的にDBビューを含むEF名前空間内にSolvedProblemsクラスを作成することでしょうか?もちろん、このクラスはリポジトリ内のメソッドによって実装され、アプリケーションレベルでの結合をperofrmします – CiccioMiami

関連する問題