1

機能するクエリが 2 つあります。それらを組み合わせて、データベースの呼び出しを減らしたいと考えていました。

                var locations = from l in db.Locations
                                where l.LocationID.Equals(TagID)
                                select l;

l.Nameが必要なので上記を行いますが、上記の結果を取得して以下のクエリに入れる方法はありますか?

                articles = from a in db.Articles
                               where
                               (
                               from l in a.Locations
                               where l.LocationID.Equals(TagID)
                               select l
                               ).Any()
                               select a;

ここで実際にデータベース呼び出しを減らすことができますか?

4

2 に答える 2

0

この方法を使用してInclude()、各記事に関連付けられている場所を取得し、記事と場所オブジェクトの両方を選択できませんか? またはそれぞれから必要なプロパティ。

include メソッドを使用すると、データベースに 2 回アクセスする必要がなくなりますが、関連するエンティティのプロパティにアクセスできるようになります。

contains次のような IEnumerable でメソッドを使用する必要があると思います。

var tagIdList = new List() { TagID };

var articles = from a in db.Articles.Include("Locations")
           where tagIdList.Contains(from l in a.Locations select l.LocationID)
           select new { a, a.Locations.Name };

(未テスト)

于 2013-05-26T12:34:08.507 に答える