ObjectContext.DeleteObject(Object) Yöntem

Tanım

Bir nesneyi silinmek üzere işaretler.

public:
 void DeleteObject(System::Object ^ entity);
public void DeleteObject (object entity);
member this.DeleteObject : obj -> unit
Public Sub DeleteObject (entity As Object)

Parametreler

entity
Object

Silinecek varlığı belirten bir nesne. Nesnesi dışında Detachedherhangi bir durumda olabilir.

Özel durumlar

entity, null değeridir.

Örnekler

Bu örnek belirli bir ProductID ile bir EntityKey oluşturur, veri kaynağından bir Product nesnesi almak için anahtarını kullanır, ürünü siler ve değişiklikleri veritabanına kaydeder.

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));
    }
}

Bu örnek var olan bir sipariş öğesini siler, yeni bir öğe ekler ve değişiklikleri veritabanına kaydeder.

// 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());
    }
}

Açıklamalar

bir nesneyi öğesinden silinmek ObjectStateManagerüzere işaretler. Yöntem çağrıldığında nesne veri kaynağında SaveChanges silinir.

Üst nesne silindiğinde, kısıtlanmış ilişkideki tüm alt nesneler de silinir. Bu sonuç, ilişki için ilişkilendirmede CascadeDelete özelliğini etkinleştirmekle aynıdır.

Yöntemi DeleteObject , zaten silinmiş nesnelerde çağrılabilir.

Şunlara uygulanır

Ayrıca bkz.