0

ctx.dbmlファイルに関連付けたArticlesとStatussの2つのテーブルがあります。

Articles
id:int
title:varchar(255)
status_id:int

Statuses
id:int
name:varchar(255)

私がやりたいのは、特定のステータスのすべての記事をフィルタリングすることです。仮説的に言えば、次のようなものです。

var filteredArticles = from article in ctx.Articles
                       where article.Status.name == "Active"
                       select article;

私が抱えている問題は、上記のlinqクエリの2行目で、Intellisenseがarticle.Status.nameを提供しないことです。私はこのようなコードをインターネットで見たので、何かが足りないに違いありません。助けてください。

4

1 に答える 1

4

希望どおりに実行するには、2つのテーブル間に関連付けを設定する必要があります。

方法:LINQとSQLクラスの間に関連付け(関係)を作成する(O / Rデザイナ)

または、手動で結合を作成することもできます。

var activeArticles = from a in ctx.Articles
                     join s in ctx.statuses on a.status_id equals s.id
                     select a;

アソシエーションルートを使用する場合は、SELECT N+1エラーを発生させないように十分に注意してください。

于 2011-06-07T13:13:38.183 に答える