How to: Create and Execute Object Queries with Complex Types (Entity Framework)
This example uses the schemas defined in the topic How to: Define a Model with Complex Type (Entity Framework).
To create the project using complex types
Create a console application project named CustomerComplexAddrClient and add references to System.Data.Entity and System.Runtime.Serialization.
Add a reference to the dll built from the project described in the topic How to: Define a Model with Complex Type (Entity Framework).
Add the schemas from the topic How to: Define a Model with Complex Type (Entity Framework) to the same folder as the executable.
Create an Application Configuration file as shown in the example.
Copy the code in the example to the Program.cs file.
Add an application configuration file with the content shown below.
Build and run the project.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="CustomerComplexAddressContext"
connectionString="metadata=.;
provider=System.Data.SqlClient;
provider connection string="
Data Source=serverName;
Initial Catalog=CustomerWComplexAddr;
Integrated Security=True;
multipleactiveresultsets=true""
providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
Example
The example code displays all CCustomers and the inner properties of the CAddress complex type. The object context contains a collection of CCustomers with the complex property Address. The Address property is of type CAddress. All its internal properties are accessible from instances of the CCustomer type.
Option Explicit On
Option Strict On
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports CustomerComplexAddress_VB
Imports CustomerComplexAddress_VB.CustomerComplexAddr
Module Module1
Sub Main()
Try
Using objCtx As CustomerComplexAddrContext = _
New CustomerComplexAddrContext()
For Each customer As CCustomer In objCtx.CCustomers
Console.WriteLine("Customer Id: " & _
"{0} {1}" & vbNewLine & "{2} {3}," & _
"{4} {5}" & vbNewLine & "Phone: {6}", _
customer.CustomerId.ToString(), _
customer.CompanyName, _
customer.Address.StreetAddress, _
customer.Address.City, _
customer.Address.Region, _
customer.Address.PostalCode, _
customer.Address.Phone)
Console.Write(vbNewLine)
Next
End Using
Catch ex As Exception
Console.WriteLine(ex.ToString())
End Try
End Sub
End Module
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CustomerComplexAddress;
namespace CustomerComplexAddressClient
{
class Program
{
static void Main(string[] args)
{
try
{
using (CustomerComplexAddressContext objCtx =
new CustomerComplexAddressContext())
{
foreach (CCustomer customer in objCtx.CCustomers)
{
Console.WriteLine("Customer Id: " +
"{0} {1}\r\n{2} {3}," +
"{4} {5}\n\rPhone: {6}",
customer.CustomerId.ToString(),
customer.CompanyName,
customer.Address.StreetAddress,
customer.Address.City,
customer.Address.Region,
customer.Address.PostalCode,
customer.Address.Phone);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
See Also
Tasks
How to: Define a Model with Complex Type (Entity Framework)
How to: Add and Modify Objects with Complex Types (Entity Framework)