方法: 複合型をクエリする (Entity Framework)
このトピックでは、複合型プロパティを含むエンティティ型オブジェクトを返すクエリを実行する方法について説明します。 複合型の詳細については、「複合型オブジェクト (Entity Framework)」および「How to: Create and Modify Complex Types」を参照してください。
この例のコードを実行するには
Add the AdventureWorks Sales Model to your project and configure your project to use the Entity Framework . 詳細については、「Entity Data Model ウィザードを使用する方法 (Entity Framework)」を参照してください。
アプリケーションのコード ページで、次の using ステートメント (Visual Basic の場合は Imports) を追加します。
Imports System Imports System.Collections.Generic Imports System.Collections Imports System.Data.Common Imports System.Data Imports System.IO Imports System.Data.SqlClient Imports System.Data.EntityClient Imports System.Data.Metadata.Edm
using System; using System.Collections.Generic; using System.Collections; using System.Data.Common; using System.Data; using System.IO; using System.Data.SqlClient; using System.Data.EntityClient; using System.Data.Metadata.Edm;
.edmx ファイルをダブルクリックして、エンティティ デザイナーの [モデル ブラウザー] ウィンドウにモデルを表示します。
エンティティ デザイナー画面で、Contact エンティティ型の Email プロパティと Phone プロパティを選択し、右クリックして [新しい複合型へのリファクター] を選択します。 選択した Email プロパティと Phone プロパティの新しい複合型がモデル ブラウザーに追加されます。
新しい型の名前を EmailPhone に変更します。 Contact エンティティ型のプロパティの名前を EmailPhoneComplexType. に変更します。
Entity Data Model ウィザードを使用した複合型の作成と変更の詳細については、「How to: Refactor Existing Properties into a Complex Type Property (Entity Data Model Tools)」および「How to: Create and Modify Complex Types」を参照してください。
例
次の例では、Contacts
のコレクションを返すクエリを実行します。 Contact
型には複合型プロパティ EmailPhoneComplexProperty
が含まれています。このプロパティは EmailAddress
プロパティおよび Phone
プロパティで構成されます。 この例では、ContactID
プロパティと EmailPhoneComplexType
複合型の値が出力されます。
Using context As New AdventureWorksEntities()
Dim contacts = From contact In context.Contacts _
Where contact.ContactID = 3 _
Select contact
For Each contact As Contact In contacts
Console.WriteLine("Contact Id: " & contact.ContactID)
Console.WriteLine("Contact's email: " & contact.EmailPhoneComplexProperty.EmailAddress)
Console.WriteLine("Contact's phone#: " & contact.EmailPhoneComplexProperty.Phone)
Next
End Using
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
var contacts =
from contact in context.Contacts
where contact.ContactID == 3
select contact;
foreach (Contact contact in contacts)
{
Console.WriteLine("Contact Id: " + contact.ContactID);
Console.WriteLine("Contact's email: " + contact.EmailPhoneComplexProperty.EmailAddress);
Console.WriteLine("Contact's phone#: " + contact.EmailPhoneComplexProperty.Phone);
}
}
参照
リファレンス
Complex Type Objects
How to: Create and Modify Complex Types