は私がJOIN(INNER, OUTER)
を使用したことがない、と最良のシナリオであるとき、私はどんな考えを持っていない:私は決してJOINを使用していません。適切な時はいつですか?
私は、オブジェクトを取得するには2つのまたは3のクエリを使用していますActionResults
の2つの例を持って、使用することをお勧めではありませんa JOIN
?
第1の例:
public ActionResult JobTags(int id)
{
var jobTagsList = (from j in db.JobTags
where j.JobID == id
select j.TagID).ToList();
var tags = (from j in db.Tags
where jobTagsList.Contains(j.ID.ToString())
select j).ToList();
return View(tags);
}
が最後にそのjは私だけJOIN
この二つのテーブルとを選択することはできますか?
第2の例:
public ActionResult ImageListWhoApp(int id)
{
//We get here the ID from Job page using dbo.Jobs
var userIdList = (from j in db.Jobs
where j.ID == id
select j.ID.ToString()).ToList();
//We get here who applied at this job using dbo.AppliedJobs
var appJobIdList = (from j in db.AppliedJobs
where userIdList.Contains(j.JobID.ToString())
select j.UserID).ToList();
//Finally we get here the avatars of the user who applied at the job
//We are using this as a hyperlink to user profile.
var appUserImage = (from j in db.Images
where appJobIdList.Contains(j.UserID.ToString())
select j).ToList();
return View(appUserImage);
}
は、このアプローチはばかげてきませんか?このようにしてこのようなことをするのは普通ですか?どのようにしてJOIN
をこの3のSQL
から作成しますか?出来ますか?それは良い方法ですか?
ありがとうございました!
モデルクラスにナビゲーションプロパティがありませんか?それらは、ほとんどの場合、結合を不要にするものです。 –
私もLINQの 'JOIN'は冗長でT-SQLの' JOIN'に比べて制限があるためです。 – qxg
EFを使用し、ナビゲーションプロパティを持っている場合、通常は 'JOIN'は必要ありません。しかし、あなたが結合したいオブジェクトを持つ2つのリストを持っているなら、それは多くの意味があります。 – Oliver