Elimina object e le sue entity framework correlate

Qualcuno sa come eliminare un object e tutte le quadro correlate.

Ad esempio, ho tabelle, prodotti, categoria, categoria prodotto e productDetails, il prodotto category si unisce alla tabella di prodotto e categoria.

Ho letto da http://msdn.microsoft.com/en-us/library/bb738580.aspx che

L’eliminazione dell’object padre cancella anche tutti gli oggetti figli nella relazione vincasting. Questo risultato CascadeDelete a abilitare la proprietà CascadeDelete sull’associazione per la relazione.

Sto usando questo codice:

 Product productObj = this.ObjectContext.Product.Where(p => p.ProductID.Equals(productID)).First(); if (!productObj.ProductCategory.IsLoaded) productObj.ProductCategory.Load(); if (!productObj.ProductDetails.IsLoaded) productObj.ProductDetails.Load(); //my own methods. base.Delete(productObj); base.SaveAllObjectChanges(); 

Ma sto ricevendo un errore su ObjectContext.SaveChanges(); Vale a dire,

Una relazione viene aggiunta o eliminata da un AssociationSet “FK_ProductCategory_Product”. Con i vincoli di cardinalità, deve anche essere aggiunto o eliminato un corrispondente “ProductCategory”.

Grazie per la risposta. Ho risolto il mio problema. Usando la stessa cascata in EDMX. Per la spiegazione sto rispondendo alla mia stessa domanda. 🙂

Dobbiamo aggiungere nel file EDMX in due parti

  1. Nella porzione SSDL
  2. Nella porzione CSDL

Dai un’occhiata a questa domanda .
Qui viene descritto il caso dell’associazione a un livello. Nel caso in cui si imposta l’azione OnDelete in modo appropriato non ci dovrebbero essere problemi per eliminare tutti gli oggetti figlio associati.

Inoltre, se guardi il tuo file edmx in Visual Studio, puoi selezionare “associazione” e selezionare la proprietà “End1 OnDelete” e impostare su “Cascade”.

Vale la pena notare che è necessario assicurarsi che gli oggetti siano caricati per essere eliminati – Ho acceso Cascade ma non è stato d’aiuto fino a quando non ho caricato gli oggetti richiesti (curiosamente non ho nemmeno bisogno che Cascade si accendesse del tutto in il mio caso). Ho documentato i dettagli sul post che mi ha aiutato di più nel rintracciare i dettagli Entity Framework elimina l’object figlio