Export (0) Print
Expand All

ObjectContext.DeleteObject Method

Marks an object for deletion.

Namespace:  System.Data.Objects
Assembly:  System.Data.Entity (in System.Data.Entity.dll)

'Declaration
Public Sub DeleteObject ( _
	entity As Object _
)

Parameters

entity
Type: System.Object

An object that specifies the entity to delete. The object can be in any state except Detached.

Marks an object for deletion from the ObjectStateManager. The object is deleted in the data source when the SaveChanges method is called.

Deleting the parent object also deletes all the child objects in the constrained relationship. This result is the same as enabling the CascadeDelete property on the association for the relationship.

The DeleteObject method can be called on objects that are already deleted.

These examples are based on the Adventure Works Sales Model.

This example constructs an EntityKey with a specific ProductID, uses the key to retrieve a Product object from the data source, deletes the product, and saves the changes to the database.

Dim deletedProduct As Object 

' Define the key of the product to delete.  
Dim productKey As New EntityKey("AdventureWorksEntities.Products", "ProductID", productId)

Using context As New AdventureWorksEntities()
    ' Get the object to delete with the specified key.  
    If context.TryGetObjectByKey(productKey, deletedProduct) Then 
        Try 
            ' Delete the object with the specified key  
            ' and save changes to delete the row from the data source. 
            context.DeleteObject(deletedProduct)
            context.SaveChanges()
        Catch ex As OptimisticConcurrencyException
            Throw New InvalidOperationException(String.Format("The product with an ID of '{0}' could not be deleted." & _
                                                              "Make sure that any related objects are already deleted.", _
                                                              productKey.EntityKeyValues(0).Value), ex)
        End Try 
    Else 
        Throw New InvalidOperationException(String.Format("The product with an ID of '{0}' could not be found." & _
                                                          "Make sure that Product exists.", productKey.EntityKeyValues(0).Value))
    End If 
End Using

This example deletes an existing order item, adds a new item, and saves the changes to the database.

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

Using context As New AdventureWorksEntities()
    Try 
        Dim order = (From o In context.SalesOrderHeaders
            Where o.SalesOrderID = orderId
            Select o).First()

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

        ' You do not have to call the Load method to load the details for the order,  
        ' because lazy loading is set to true  
        ' by the constructor of the AdventureWorksEntities object.  
        ' With lazy loading set to true the related objects are loaded when  
        ' you access the navigation property. In this case SalesOrderDetails.  

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

        ' Create a new SalesOrderDetail object.  
        ' You can use the static CreateObjectName method (the Entity Framework  
        ' adds this method to the generated entity types) instead of the new operator:  
        ' SalesOrderDetail.CreateSalesOrderDetail(1, 0, 2, 750, 1, (decimal)2171.2942, 0, 0,  
        ' Guid.NewGuid(), DateTime.Today))  
        Dim detail = New SalesOrderDetail With
        {
            .SalesOrderID = 0,
            .SalesOrderDetailID = 0,
            .OrderQty = 2,
            .ProductID = 750,
            .SpecialOfferID = 1,
            .UnitPrice = CDec(2171.2942),
            .UnitPriceDiscount = 0,
            .LineTotal = 0,
            .rowguid = Guid.NewGuid(),
            .ModifiedDate = DateTime.Now
        }
        order.SalesOrderDetails.Add(detail)

        ' 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: {0}", order.SalesOrderID.ToString())

        For Each item As SalesOrderDetail In order.SalesOrderDetails
            Console.WriteLine("Item ID: {0}", item.SalesOrderDetailID.ToString())
            Console.WriteLine("Product: {0}", item.ProductID.ToString())
            Console.WriteLine("Quantity: {0}", item.OrderQty.ToString())
        Next 
    Catch ex As UpdateException
        Console.WriteLine(ex.ToString())
    End Try 
End Using

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5 SP1

.NET Framework Client Profile

Supported in: 4

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft