web-dev-qa-db-ja.com

Entity Frameworkに参加して含める

次のlinq to entitiesのクエリがあります。問題は、「Tags」リレーションをロードしていないように見えることです。タグに参加しなくてもうまくいきますが、それをする必要があります。

            var items = from i in db.Items.Include("Tags")
                        from t in i.Tags
                        where t.Text == text
                        orderby i.CreatedDate descending
                        select i;

このクエリを尋ねる他の方法はありますか?多分それを分割するか何か?

29
Olaj

さて、Includeはどこと矛盾します。 「すべてのタグを読み込む」と言ってください。 whereは、「いくつかのタグをロードします。」クエリとインクルードの間に矛盾がある場合、クエリが常に優先されます。

allタグをanyアイテムから少なくとも1つのタグ==テキスト:

        var items = from i in db.Items.Include("Tags")
                    where i.Tags.Any(t => t.Text == text)
                    orderby i.CreatedDate descending
                    select i;

(私はあなたのDB /モデルを持っていないので、テストされていません)

LINQに関する非常に優れた無料の本 です。

50
Craig Stuntz