ObjectContext.DeleteObject Method

Marks an object for deletion.

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

public void DeleteObject(
	Object entity
)

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.

object deletedProduct;

// Define the key of the product to delete.
EntityKey productKey =
    new EntityKey("AdventureWorksEntities.Products",
        "ProductID", productId);

using (AdventureWorksEntities context = new AdventureWorksEntities())
{
    // Get the object to delete with the specified key. 
    if (context.TryGetObjectByKey(productKey, out deletedProduct))
    {
        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 (OptimisticConcurrencyException ex)
        {
            throw new InvalidOperationException(string.Format(
                "The product with an ID of '{0}' could not be deleted.\n"
                + "Make sure that any related objects are already deleted.\n",
                productKey.EntityKeyValues[0].Value), ex);
        }
    }
    else
    {
        throw new InvalidOperationException(string.Format(
            "The product with an ID of '{0}' could not be found.\n"
            + "Make sure that Product exists.\n",
            productKey.EntityKeyValues[0].Value));
    }
}

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

// Specify the order to update. 
int orderId = 43680;

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    try
    {
        var 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));
        SalesOrderDetail detail = new SalesOrderDetail
        {
            SalesOrderID = 1,
            SalesOrderDetailID = 0,
            OrderQty = 2,
            ProductID = 750,
            SpecialOfferID = 1,
            UnitPrice = (decimal)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. 
        int changes = context.SaveChanges();

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

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

.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.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft