ObjectContext.DeleteObject Method (Object)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Marks an object for deletion.

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

Public Sub DeleteObject (
	entity As Object


Type: System.Object

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

Exception Condition

entity is null.


entity does not exist.

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 AdventureWorks 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
            ' Delete the object with the specified key 
            ' and save changes to delete the row from the data source. 
        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
        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()
        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. 

        ' 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

        ' 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())
    Catch ex As UpdateException
    End Try
End Using

.NET Framework
Available since 3.5
Return to top