Как использовать класс EntityConnection с контекстом объекта (платформа Entity Framework)
В этом разделе приведен пример того, как задать существующее соединение EntityConnection для использования с контекстом объекта. Дополнительные сведения см. в разделе Управление контекстом объекта (платформа Entity Framework).
Пример в этом разделе основан на модели Модель AdventureWorks Sales (модель EDM). Чтобы запустить код, используемый в данном примере, нужно сначала добавить к проекту модель AdventureWorks Sales и настроить его для использования платформы Entity Framework. Для этого выполните инструкции из раздела Как использовать мастер моделей EDM (платформа Entity Framework).
Примеры
В данном примере создается экземпляр EntityConnection, который передается в конструктор функционирующего в течение продолжительного времени экземпляра ObjectContext. Соединение открыто вручную. Обработка обоих параметров EntityConnectionObjectContext производится вручную.
' Define the order ID for the order we want.
Dim orderId As Integer = 43661
' Create an EntityConnection.
Dim conn As New EntityConnection("name=AdventureWorksEntities")
' Create a long-running context with the connection.
Dim advWorksContext As New AdventureWorksEntities(conn)
Try
' Explicitly open the connection.
If Not conn.State = ConnectionState.Open Then
conn.Open()
End If
' 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
' Load the order's items.
order.SalesOrderDetail.Load()
' Delete the first item.
advWorksContext _
.DeleteObject(order.SalesOrderDetail.First())
' Save changes again.
If 0 < advWorksContext.SaveChanges() Then
Console.WriteLine("Changes saved.")
End If
Catch ex As InvalidOperationException
Console.WriteLine(ex.ToString())
Finally
' Explicitly dispose of the context and the connection.
advWorksContext.Dispose()
conn.Dispose()
End Try
// Define the order ID for the order we want.
int orderId = 43661;
// Create an EntityConnection.
EntityConnection conn =
new EntityConnection("name=AdventureWorksEntities");
// Create a long-running context with the connection.
AdventureWorksEntities advWorksContext =
new AdventureWorksEntities(conn);
try
{
// Explicitly open the connection.
if (conn.State != ConnectionState.Open)
{
conn.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.");
}
// Load the order's items.
order.SalesOrderDetail.Load();
// Delete the first item.
advWorksContext
.DeleteObject(order.SalesOrderDetail.First());
// Save changes again.
if (0 < advWorksContext.SaveChanges())
{
Console.WriteLine("Changes saved.");
}
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
// Explicitly dispose of the context and the connection.
advWorksContext.Dispose();
conn.Dispose();
}
См. также
Задачи
Как управлять соединением в длительно существующем контексте объекта (платформа Entity Framework)
Как вручную открыть соединение из контекста объекта (платформа Entity Framework)