다음을 통해 공유


방법: 개체 추가, 수정 및 삭제(Entity Framework)

이 항목에서는 개체 서비스를 사용하여 개체 컨텍스트의 개체를 수정하고 데이터를 데이터베이스에 저장하는 방법에 대한 예제를 제공합니다. 이 항목의 예제는 Adventure Works Sales 모델을 기반으로 합니다. 이 예제의 코드를 실행하려면 프로젝트에 AdventureWorks Sales 모델을 추가하고 Entity Framework를 사용하도록 프로젝트를 구성해야 합니다. 이렇게 하려면 방법: Entity Framework 프로젝트 수동 구성방법: 엔터티 데이터 모델 수동 정의(Entity Framework)의 절차를 수행합니다.

예제

이 예제에서 개체 쿼리는 지정된 SalesOrderID에 따라 단일 SalesOrderHeader 개체를 반환합니다. 주문의 상태를 5(발송됨)에서 1(처리 중)로 변경하고, 새 항목을 주문에 추가하며, 기존 첫 번째 항목을 삭제합니다. 그런 후 SaveChanges 메서드를 호출하여 변경 내용을 데이터베이스에 씁니다. 그런 다음 주문의 결과 상태를 콘솔에 씁니다.

' Specify the order to update.
Dim orderId As Integer = 43680

Using context As New AdventureWorksEntities()
    Try
        Dim order As SalesOrderHeader = _
        context.SalesOrderHeader.Where( _
                "it.SalesOrderID = @id", New ObjectParameter( _
                 "id", orderId)).First()

        ' Change the status and ship date of an existing order.
        order.Status = 1
        order.ShipDate = DateAndTime.Today

        ' Load items for the order, if not already loaded.
        If Not order.SalesOrderDetail.IsLoaded Then
            order.SalesOrderDetail.Load()
        End If

        ' Delete the first item in the order.
        context.DeleteObject(order.SalesOrderDetail.First())

        ' Create a new item using the static Create method
        ' and add it to the order.
        order.SalesOrderDetail.Add( _
            SalesOrderDetail.CreateSalesOrderDetail( _
            1, 0, 2, 750, 1, CDec(2171.2942), 0, 0, Guid.NewGuid(), _
            DateAndTime.Today))

        ' Save changes in the object context to the database.
        Dim changes As Integer = context.SaveChanges()

        Console.WriteLine(changes.ToString() + " changes saved!")
        Console.WriteLine("Updated item for order: " _
            + order.SalesOrderID.ToString())

        Dim item As SalesOrderDetail
        For Each item In order.SalesOrderDetail
            Console.WriteLine("Item ID: " _
                + item.SalesOrderDetailID.ToString() + "  Product: " _
                + item.ProductID.ToString() + "  Quantity: " + item.OrderQty.ToString())
        Next
    Catch ex As UpdateException
        Console.WriteLine(ex.ToString())
    End Try
End Using
// Specify the order to update.
int orderId = 43680;

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    try
    {
        SalesOrderHeader order =
            context.SalesOrderHeader.Where
            ("it.SalesOrderID = @id", new ObjectParameter(
             "id", orderId)).First();

        // Change the status and ship date of an existing order.
        order.Status = 1;
        order.ShipDate = DateTime.Today;

        // Load items for the order, if not already loaded.
        if (!order.SalesOrderDetail.IsLoaded)
        {
            order.SalesOrderDetail.Load();
        }

        // Delete the first item in the order.
        context.DeleteObject(order.SalesOrderDetail.First());

        // Create a new item using the static Create method 
        // and add it to the order.
        order.SalesOrderDetail.Add(
            SalesOrderDetail.CreateSalesOrderDetail(0,
            0, 2, 750, 1, (decimal)2171.2942, 0, 0,
            Guid.NewGuid(), DateTime.Today));

        // Save changes in the object context to the database.
        int changes = context.SaveChanges();

        Console.WriteLine(changes.ToString() + " changes saved!");
        Console.WriteLine("Updated item for order: "
            + order.SalesOrderID.ToString());

        foreach (SalesOrderDetail item in order.SalesOrderDetail)
        {
            Console.WriteLine("Item ID: "
                + item.SalesOrderDetailID.ToString() + "  Product: "
                + item.ProductID.ToString() + "  Quantity: "
                + item.OrderQty.ToString());
        }
    }
    catch (UpdateException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

참고 항목

개념

개체 추가, 수정 및 삭제(Entity Framework)
개체 서비스 개요(Entity Framework)