ObjectContext.DeleteObject(Object) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een object gemarkeerd voor verwijdering.
public:
void DeleteObject(System::Object ^ entity);
public void DeleteObject(object entity);
member this.DeleteObject : obj -> unit
Public Sub DeleteObject (entity As Object)
Parameters
- entity
- Object
Een object dat de entiteit aangeeft die moet worden verwijderd. Het object kan zich in elke staat bevinden, behalve Detached.
Uitzonderingen
entity is null.
entity bestaat niet.
Voorbeelden
In dit voorbeeld wordt een EntityKey met een specifieke Product-id samengesteld, wordt de sleutel gebruikt om een productobject op te halen uit de gegevensbron, het product te verwijderen en de wijzigingen in de database op te slaan.
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));
}
}
In dit voorbeeld wordt een bestaand orderitem verwijderd, een nieuw item toegevoegd en worden de wijzigingen in de database opgeslagen.
// 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());
}
}
Opmerkingen
Hiermee markeert u een object voor verwijdering uit de ObjectStateManager. Het object wordt verwijderd in de gegevensbron wanneer de SaveChanges methode wordt aangeroepen.
Als u het bovenliggende object verwijdert, worden ook alle onderliggende objecten in de beperkte relatie verwijderd. Dit resultaat is hetzelfde als het inschakelen van de CascadeDelete eigenschap voor de koppeling voor de relatie.
De DeleteObject methode kan worden aangeroepen op objecten die al zijn verwijderd.