2010-12-17 18 views
1

私はこのようなクエリを記述するための適切な方法を知りたい:適切な方法

var questions = from q in db.Questions 
       join sq in db.SurveyQuestions on q.QuestionID = sq.QuestionID 
       where sq.SurveyID == 1 
       orderby sq.Order 
       select q; 

私は基本的にそれが別のテーブルの値と一致した質問テーブルからすべてを選択します。

私はそうのようなクエリを記述することも可能だと思う:このクエリは動作しません

var questions = from q in db.Questions 
       from sq in q.SurveyQuestions 
       where sq.SurveyID == 1 
       orderby sq.Order 
       select q; 

が、私は考えていますかの線に沿ってより多くのです:

は何
var questions = from q in db.Questions 
       where q.SurveyQuestions.SurveyID == 1 
       orderby q.SurveyQuestions.Order 
       select q; 

をナビゲーションのプロパティを使用してエンティティフレームワークでこれらのタイプのクエリを記述する正しい方法は?

答えて

4

はこれをテストしていませんが、私は、これはあなたがQuestionSurveyQuestionのナビゲーションプロパティです

var questions = from sq in db.SurveyQuestions 
       where sq.SurveyID == 1 
       orderby sq.Order 
       select sq.Question; 

探しているものであると仮定します。

エンティティで作業していて、データベーステーブルでは作業していません。このタイプのクエリーはまさにEFのものです。最初のクエリーのようにデータベーステーブルを考える必要はありません。代わりに、より直感的なSurveyQuestionsですぐにフィルタリングを開始することができます。ナビゲーションプロパティは、データベース上で直接操作した場合に使用した結合を抽象化します。

+0

はい、これはおそらく私が探しているもののラインに沿っています。私はこれを試してみる。 – Dismissile