0

MVC と LINQ to Entity の使用は初めてです。テーブルごとに定義されたナビゲーション プロパティを使用して、複数のテーブルから列の値を選択する方法がわかりません。

以下は、テーブルの構造です。

テーブル: MasterTable
フィールド: MasterID (PK)、CaseNumber、Status、[OtherFields....]
ナビゲーション プロパティ: DetailsTable、Clients

テーブル: DetailsTable
フィールド: DetailsID (PK)、MasterID (FK)、InsuranceId (FK)、DetailsS​​tatus
ナビゲーション プロパティ: MasterTable、Insurance

表: 顧客
フィールド: CustID (PK)、CustFName、CustFName、Address_id、Phone_id、MasterID (FK)
ナビゲーション プロパティ: 注文、住所、電話

表: 保険
フィールド: InsuranceId (PK)、InsuranceName、Address1、Address2、ZipCode、州
ナビゲーション プロパティ: Customers、DetailsTable、Addresses

表: 住所
フィールド: Address_id (PK)、Address1、Address2、ZipCode、州
ナビゲーション プロパティ: 州

表: 州
フィールド: State_id (PK)、StateAbbrev
ナビゲーション プロパティ: 国

表: 電話
フィールド: Phone_id (PK)、自宅、職場、モバイル

詳細データを取得するにはどうすればよいでしょうか:
- MasterTable からの CaseNumber、Status
- Insurance テーブルからの InsuranceName、Address1、Address2、ZipCode、State ( DetailsTable からの InsuranceId に基づく)
- DetailsTable からの DetailsS​​tatus - CustFName、CustFName Customers テーブルの ,Address1, Address2, ZipCode, State (* Customers.MasterID = MasterTable.MasterID に基づく *)

ありがとう。

4

1 に答える 1

1

それは次のように見える単なる投影です。

var query = from master in dbContext.MasterTables
            select {
                master.CaseNumber,
                master.Status,
                Details = master.DetailTables.Select(detail => new {
                    detail.DetailStatus,
                    detail.Insurance.InsuranceName, 
                    detail.Insurance.Address1,
                    detail.Insurance.Address2,
                    detail.Insurance.ZipCode,
                    detail.Insurance.State 
                },
                Customers = master.Clients.Select(customer => new {
                    customer.CustFName,
                    customer.CustLName,
                    customer.Address.Address1,
                    customer.Address.Address2,
                    customer.Address.ZipCode,
                    customer.Address.State
                }
            };

それがまさにあなたが望むものかどうかはわかりませんが、そのようなクエリを作成する方法とアイデアが得られるはずです. このクエリはプロジェクションに匿名型を使用しますが、代わりにカスタム ビュー モデルを使用することもできます。

これだけを作ることもできます:

var query = dbContext.MasterTables
                     .Include(m => m.Clients)
                     .Include(m => m.DetailsTables.Select(d => d.Insurance));

そして、関連するすべてのクライアント、詳細、および保険を含むマスターデータをロードするだけです。その後、コードで射影を行うか、エンティティをビューで直接使用できます。

そしてそれは

于 2013-01-07T09:23:27.917 に答える