Как запросить сущность, сопоставленную с отдельными таблицами
При использовании данных из прежних версий в концептуальной модели иногда удобно бывает сопоставить одну сущность с двумя таблицами базы данных. Это можно сделать, если у двух таблиц имеется общий ключ, например у таблиц Customer и Store образца базы данных AdventureWorks, поставляемой с SQL Server 2005.
Программный код этого примера использует концептуальную модель, определенную в разделе Как определить модель с одной сущностью, сопоставленной с двумя таблицами. Объектные запросы к сущности, сопоставленной с двумя таблицами, осуществляются так же, как и к любым другим сущностям. Это сопоставление не влияет на синтаксис программного кода.
Создание проекта с использованием сущности, сопоставленной с несколькими таблицами
Создайте консольное приложение.
Добавьте ссылку на концептуальную модель, определенную в разделе Как определить модель с одной сущностью, сопоставленной с двумя таблицами.
Добавьте ссылки на System.Data.Entity и System.Runtime.Serialization.
Добавьте директиву препроцессора для модели 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 );
}
}
}
}
См. также
Задачи
Как определить модель с одной сущностью, сопоставленной с двумя таблицами