Поделиться через


Как создавать и выполнять запросы объектов со сложными типами (Entity Framework)

В этом примере используются схемы, определенные в разделе Как определить модель со сложным типом (платформа Entity Framework).

Создание проекта с использованием сложных типов

  1. Создайте проект приложения командной строки с именем CustomerComplexAddrClient и добавьте ссылки на пространства имен System.Data.Entity и System.Runtime.Serialization.

  2. Добавьте ссылку на библиотеку, созданную в проекте, описанном в разделе Как определить модель со сложным типом (платформа Entity Framework).

  3. Добавьте схемы из раздела Как определить модель со сложным типом (платформа Entity Framework) в ту же папку, где расположен исполняемый файл.

  4. Создайте файл конфигурации приложения, как показано в примере.

  5. Скопируйте код из примера в файл Program.cs.

  6. Добавьте файл конфигурации приложения с содержимым, показанным ниже.

  7. Постройте и запустите проект.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="CustomerComplexAddressContext" 
         connectionString="metadata=.;
         provider=System.Data.SqlClient;
         provider connection string=&quot;
         Data Source=serverName;
         Initial Catalog=CustomerWComplexAddr;
         Integrated Security=True;
         multipleactiveresultsets=true&quot;"
         providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

Примеры

В примере кода показываются все объекты CCustomers и внутренние свойства сложного типа CAddress. Контекст объекта содержит коллекцию CCustomers со сложным свойством Address. Свойство Address имеет тип CAddress. Все его внутренние свойства доступны из экземпляров типа CCustomer.

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());
            }
        }
    }
}

См. также

Задачи

Как определить модель со сложным типом (платформа Entity Framework)
Как добавить и изменить объекты со сложными типами (платформа Entity Framework)

Основные понятия

Сложный тип (модель EDM)