Как вручную открыть соединение из контекста объекта (платформа Entity Framework)
В данном разделе показано на примере, как вручную открыть соединение из контекста объекта. Дополнительные сведения см. в разделе Управление контекстом объекта (платформа Entity Framework).
Пример в этом разделе основан на модели Модель AdventureWorks Sales (модель EDM). Чтобы запустить код, используемый в данном примере, нужно сначала добавить к проекту модель AdventureWorks Sales и настроить его для использования платформы Entity Framework. Для этого выполните инструкции из раздела Как использовать мастер моделей EDM (платформа Entity Framework).
Примеры
В данном примере проводится открытие соединения вручную, затем выполнение запроса и сохранение изменений. Соединение закрывается после выхода контекста из области действия и его удаления.
' Define the order ID for the order we want.
Dim orderId As Integer = 43661
Using advWorksContext As New AdventureWorksEntities()
Try
' Explicitly open the connection.
advWorksContext.Connection.Open()
' Execute a query to return an order.
Dim order As SalesOrderHeader = _
advWorksContext.SalesOrderHeader.Where( _
"it.SalesOrderID = @orderId", New ObjectParameter("orderId", orderId)) _
.Execute(MergeOption.AppendOnly).First()
' Change the status of the order.
order.Status = 1
' Save changes.
If 0 < advWorksContext.SaveChanges() Then
Console.WriteLine("Changes saved.")
End If
Catch ex As InvalidOperationException
Console.WriteLine(ex.ToString())
End Try
' The connection is closed when the object context
' is disposed because it is no longer in scope.
End Using
// Define the order ID for the order we want.
int orderId = 43661;
using (AdventureWorksEntities advWorksContext =
new AdventureWorksEntities())
{
try
{
// Explicitly open the connection.
advWorksContext.Connection.Open();
// Execute a query to return an order.
SalesOrderHeader order =
advWorksContext.SalesOrderHeader.Where(
"it.SalesOrderID = @orderId", new ObjectParameter("orderId", orderId))
.Execute(MergeOption.AppendOnly).First();
// Change the status of the order.
order.Status = 1;
// Save changes.
if (0 < advWorksContext.SaveChanges())
{
Console.WriteLine("Changes saved.");
}
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.ToString());
}
// The connection is closed when the object context
// is disposed because it is no longer in scope.
}
См. также
Задачи
Как управлять соединением в длительно существующем контексте объекта (платформа Entity Framework)
Как использовать класс EntityConnection с контекстом объекта (платформа Entity Framework)