Поделиться через


Как добавить, изменить и удалить объекты (платформа Entity Framework)

В этом разделе приводится пример, иллюстрирующий использование служб объектов для модификации объектов в контексте объекта и сохранения данных в базе данных. Пример в этом разделе основан на модели Adventure Works Sales. Чтобы запустить код, используемый в данном примере, нужно сначала добавить к проекту модель AdventureWorks Sales и настроить его для использования платформы Entity Framework. Для этого выполните инструкции из разделов Как вручную настроить проект Entity Framework и Как определить модель EDM вручную (платформа Entity Framework).

Примеры

В этом примере запрос объектов возвращает один объект SalesOrderHeader на основе указанного идентификатора SalesOrderID. Состояние этого заказа изменяется с 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)