4

.edmx ファイルに Client というエンティティがあります。

それに対していくつかのlinqクエリを実行する必要がありますが、それらすべてでフィルターが必要です(アクティブ= 1としましょう)。

すべてのクエリを実行したくありませんwhere c.active == 1。エンティティにデフォルトのフィルターが適用されている方が理にかなっています。それはできることですか?

または、テーブルの代わりにエンティティのベースとしてクエリを使用できますか? (私はデータベースの最初のアプローチを取っています)

DBにビューを作成し、エンティティをビューにリンクする別の解決策があることは知っていますが、それも望んでいません。

4

1 に答える 1

2

生成されたデータベース コンテキストに追加のメソッドを追加できます。

partial class DatabaseContext // same name as your generated context
{
    IQueryable<Client> ActiveClients { get { return Clients.Where(c => c.active == 1); } }
}

そして、コード全体で使用してください。これは部分クラス (生成されたコンテキスト クラス以外のファイルで定義) の一部であるため、スキーマを更新しても codegen ツールの影響を受けません。

于 2012-09-19T11:19:51.213 に答える