2011-10-26 17 views
0
SELECT i.answerc, d.answera, d.answerb 
FROM tableone AS u 
INNER JOIN tabletwo AS i ON u.OneId = i.OneId 
INNER JOIN tablethree AS l ON u.TwoId = l.TwoId 
INNER JOIN tablefour AS k ON u.ThreeId = k.ThreeId 
INNER JOIN tablefive AS p ON u.fourId = p.fourId 
INNER JOIN tablesix AS d ON u.fiveId = d.fiveId 
WHERE u.columnone = @parameter_one 
AND l.columnone = @parameter_two 
AND k.columnone = @parameter_three 
AND p.columnone = @Parameter_four 

私はモデルを作成しましたが、このクエリを書く方法は今私を混乱させていますか?誰か助けてくれますか?私は古い学校のSqlConnectionを使って作業していましたが、エンティティフレームワーク4に移植するように言われました。EntityFrameworkの新機能エンティティにlinqでこのクエリを書くにはどうすればいいですか

+0

これは興味深いスキルです。あなたはそこにいます – Yuck

+1

私はそれらがスクラブされたテーブル名であると仮定しています。私は確かに希望。 –

+0

はいスコットは、私が許可されているか、または公開する必要があるので、すべてをスクラブしたはずです。 – Alex

答えて

1

テーブルがリレーション内にない場合、.edmxファイル内にナビゲーションプロパティがない場合。したがって、LINQは次のようになります。

var query = from u in context.tableone 
    join i in context.tabletwo on u.OneId equals i.OneId 
    join l in context.tablethree on u.TwoId equals l.TwoId 
    join k in context.tablefour on u.ThreeId equals k.ThreeId 
    join p in context.tablefive on u.fourId equals p.fourId 
    join d in context.tablesix on u.fiveId equals d.fiveId 
    where u.columnone == parameterONE 
     && l.columnone == parameterTWO 
     && k.columnone == parameterTHREE 
     && p.columnone == parameterFOUR 
    select new { i.answerc, d.answera, d.answerb }; 

ここで、parameterXXXは変数です。 ナビゲーションプロパティがある場合は、それらを使用する必要があります。

+0

私はナビゲーションプロパティを使用しました。あなたが言及したように、より読みやすい方法です。しかし、元の質問に答えることもありがとうございました。 – Alex

1

.edmxファイルを使用している場合は、デザイナーを見て、 。ストレートSQLで考えるのではなく、.edmxのナビゲーションプロパティに基づいてデータベースから抽出しようとしているオブジェクトをどのように構築するかについてもっと考えてみてください。

+0

ありがとう、私はしばらく私を取ったことを知っていますが、Navigation Propertiesであなたが話していたことを理解しました。それが正しい方法です。彼は私の元の質問に答えたので、私はもう一つの答えを選んだが、あなたと彼は正しい。 EFはSQLnessと結合を考えることを意味しません。私がそれを正しくするのを助けてくれてありがとう。 – Alex

1

関係が設定されている場合は、このようなことができると思います。

var query = from u in context.tableone 
    where u.columnone == parameterONE 
     && u.tablethree.columnone == parameterTWO 
     && u.tablefour.columnone == parameterTHREE 
     && u.tablefive.columnone == parameterFOUR 
    select new { u.tabletwo.answerc, u.tablesix.answera, u.tablesix.answerb }; 
関連する問題