Как запросить сущность, сопоставленную с отдельными таблицами

При использовании данных из прежних версий в концептуальной модели иногда удобно бывает сопоставить одну сущность с двумя таблицами базы данных. Это можно сделать, если у двух таблиц имеется общий ключ, например у таблиц Customer и Store образца базы данных AdventureWorks, поставляемой с SQL Server 2005.

Программный код этого примера использует концептуальную модель, определенную в разделе Как определить модель с одной сущностью, сопоставленной с двумя таблицами. Объектные запросы к сущности, сопоставленной с двумя таблицами, осуществляются так же, как и к любым другим сущностям. Это сопоставление не влияет на синтаксис программного кода.

Создание проекта с использованием сущности, сопоставленной с несколькими таблицами

  1. Создайте консольное приложение.

  2. Добавьте ссылку на концептуальную модель, определенную в разделе Как определить модель с одной сущностью, сопоставленной с двумя таблицами.

  3. Добавьте ссылки на System.Data.Entity и System.Runtime.Serialization.

  4. Добавьте директиву препроцессора для модели AdventureWorksModel, реализованной в разделе Как определить модель с одной сущностью, сопоставленной с двумя таблицами.

Пример

Сущность, сопоставленная с несколькими таблицами в этом примере, может быть использована для пересчета результатов в цикле foreach. Приведенный ниже код выводит значения свойств из обеих таблиц, сопоставленных сущности «Магазин».

Option Explicit On
Option Strict On
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports StoreCustomer_VB.AdventureWorksModel

Module Module1
    Sub Main()
        Using objCtx As AdventureWorksEntities =
                        New AdventureWorksEntities()
            For Each store As Store In objCtx.Store
                Console.WriteLine("CustomerId: {0} Name: {1} " & vbNewLine _
                    & vbTab & "Account#: {2} SalespersonId: {3}", _
                    store.CustomerID, store.Name, store.AccountNumber, store.SalesPersonID)
                Console.Write(vbNewLine)
            Next
        End Using
    End Sub
End Module
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AdventureWorksModel;

namespace ClientStoreCustomerSplit
{
    class Program
    {
        static void Main(string[] args)
        {
            using (AdventureWorksEntities objCtx = new AdventureWorksEntities())
            {
                foreach (Store store in objCtx.Store)
                    Console.WriteLine("CustomerId: {0} Name: {1} \r\n\t" +
                    "Account#: {2} SalespersonId: {3}",
                        store.CustomerID, store.Name, 
                        store.AccountNumber, store.SalesPersonID );
            }
        }
    }
}

См. также

Задачи

Как определить модель с одной сущностью, сопоставленной с двумя таблицами