本主题提供有关如何手动从对象上下文打开连接的示例。有关更多信息,请参见管理对象上下文(实体框架)。
本主题中的示例基于 AdventureWorks 销售模型 (EDM)。若要运行本示例中的代码,必须已将 AdventureWorks 销售模型添加到您的项目中,并将项目配置为使用 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.
}
另请参见
任务
如何:在长时间运行的对象上下文中管理连接(实体框架)
如何:将 EntityConnection 用于对象上下文(实体框架)