Использование модели объектов Northwind (модель EDM)
Чтобы использовать модель объектов Northwind, спроектированную и построенную в коде приложений соседних разделов, добавьте ссылку на DLL-библиотеку и директиву using
, задающую пространство имен NorthwindLib. Типы пространства имен будут доступны в коде приложения без синтаксиса SQL.
Файл конфигурации и строка соединения
Для использования модели объектов необходимо соединение с базой данных, в которой хранятся данные приложения. Необходимо также соединение сущности с объектами времени выполнения, предоставляемыми созданной из схем библиотекой.
Файл exe.config содержит строку соединения, которая используется для соединения с базой данных SQL Server и установления соединения сущности. Используя соединение сущности, из кода можно получить доступ к сущностям и ассоциациям модели объектов.
Текст строки соединения должен быть добавлен в файл exe.config разработчиком. Это приложение задает класс Northwind. Назначение providerName="System.Data.EntityClient"
задает соединение сущности, которое использует схему сопоставления, определенную в спецификации сопоставления Northwind.
В строке соединения также определяется сервер, используемый в соединении SQL: provider connection string="server=servername"
.
В следующем примере показано содержимое файла exe.config.
?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="Northwind"
connectionString='Metadata=.;
Provider=System.Data.SqlClient;
Provider Connection String="server=servername;
database=Northwind;Integrated Security=true;
Connection Timeout=5;multipleactiveresultsets=true"'
providerName="System.Data.EntityClient"/>
</connectionStrings>
</configuration>
Путь к метаданным, которые включают в себя концептуальную схему, метаданные хранилища и спецификацию сопоставления, указывается присвоением Metadata=.
. В этом примере файлы расположены в одной папке с исполняемым объектом, и поэтому путь задан точкой (.) в коде Metadata=.
. Если схемы и файлы сопоставления находятся в разных папках, необходимо указать полный путь.
Примечание. |
---|
Эта строка соединения устанавливает для параметра режима MARS значение True, когда это требуется для вызова метода Load для ассоциаций, если на данном соединении уже открыт другой модуль чтения данных. |
Код приложения
В следующем фрагменте кода используются сущности и ассоциации, определенные в концептуальной схеме и сопоставленные с метаданными хранилища в спецификации сопоставления. Сведения о модели данных см. в разделе Модель Northwind (модель EDM). Соединение EntityConnection открыто с объектом сущности ObjectContext, созданным из концептуальной схемы, определенной в разделе Концептуальная схема Northwind (модель EDM). Сущности и ассоциации в пространстве имен NorthwindLib используются для отображения свойств сущностей, таких как идентификаторы заказов, поиска заказчиков на основе ассоциаций между сущностями, отображения продуктов, поиска и отображения категорий продуктов, связанных с продуктами при помощи ассоциаций.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NorthwindLib;
namespace NorthwindClient
{
class Program
{
static void Main(string[] args)
{
try
{
using (NorthwindLib.Northwind DB = new Northwind())
{
foreach (SalesOrder salesOrder in DB.SalesOrders)
{
salesOrder.CustomerReference.Load();
Console.WriteLine(
"Customer Contact: {0} ** OrderID: {1}",
salesOrder.Customer.ContactName,
salesOrder.OrderID.ToString());
}
foreach (Product product in DB.Products)
{
product.CategoryReference.Load();
Console.WriteLine(" Product: " +
product.ProductName +
" ** Category: " +
product.CategoryReference.Value.CategoryName);
}
DB.Connection.Close();
}
}
catch (System.Data.MappingException e)
{
Console.WriteLine(e.ToString());
}
catch (System.Data.CommandExecutionException e)
{
Console.WriteLine(e.ToString());
}
}
}
}
См. также
Другие ресурсы
Спецификация схем и сопоставлений (платформа Entity Framework)
Спецификации модели EDM