3

SQL データベースに「Clients」というテーブルがあり、そのテーブルには status というフィールドがあります。アクティブな場合は「A」、非アクティブな場合は「I」の 2 つの値を含めることができます。一方、Entity Framework v5 を使用する mvc Web アプリケーションでは、特定の ClientRepository を使用してリポジトリ パターンを実装しました。

ClientRepository を呼び出すたびに、すべてのクエリがフィルター処理され、ステータス 'A' レコードのみが返されることを保証する事前定義されたフィルターがあります..すべてが順調です。

私が今直面している問題は、LINQ を使用して、ClientOrders などのクライアントにリンクされているテーブルをクエリし、Clients というナビゲーション プロパティにアクセスするときです。そうすると、「I」を含む「ステータス」を持つすべてのクライアントが取得されます。

デザイナーまたはコンテキストで EF を構成して、ステータス 'A' のみが返されるように私の要件を満たすようにナビゲーション プロパティの条件を設定する方法があるかどうかは誰にもわかりませんか?

これは、'status' をレコード インジケーターとして使用する私のアプリケーションの多くのケースの一例であり、修正を適用する必要がある複数のナビゲーション プロパティがあることに注意してください。

ありがとう。

4

2 に答える 2

3

これは、LINQ クエリを使用して実現できます。これを行う例を次に示します。

var clientOrders = _context.ClientOrders    
    .Select(item => new {
        ClientOrders = item,
        Clients = item.Clients.Where(q => q.Status == "A")
    }).ToList();

これにより、新しい匿名型のリストが返されます。このクエリを実行した後、匿名構造を ClientOrders に変換できます。

于 2013-10-04T04:44:30.530 に答える