2009-06-10 14 views
0

Ich habe drei Tabellen: Context, Component und ComponentContext. Die ComponentContext-Tabelle verknüpft die Komponente und den Kontext in eine N: M-Beziehung.N: M Relation und Löschen von Datensätzen

Ich arbeite an einem C# -Projekt, das eine Reihe von Daten in diese Tabellen importiert. Es verwendet ein Entity-Modell und als Ergebnis sehe ich nur eine Component-Entität und eine Context-Entität in meinem Code.

Jetzt, nur mit diesen Entitäten, ist es möglich, den Inhalt aller drei Tabellen zu löschen? Ich könnte zum Beispiel folgendes verwenden:

foreach (var obj in CPE.Context) { CPE.DeleteObject(obj); } 

Um alle Kontextdatensätze zu löschen. (CPE ist das Kontext-Entitätsmodell.) Dies schlägt natürlich fehl, da Context Beziehungen zu Komponenten hat. Also brauche ich eine andere Methode.

(Und ja, kann ich SQL das gleiche zu tun, aber es ist für ein „Proof of Usability“ für das Modell Einheit, damit ich es so viel innerhalb des Modells wie möglich machen will.)

Antwort

0

Und dann Ich habe die Dummheit bemerkt, die ich in meinem Code gemacht habe. Es beschwerte sich über einen Verweis auf eine andere Tabelle als Grund, die Kontextdatensätze nicht zu löschen. Da ich gerade die neue ComponentContext-Tabelle hinzugefügt habe, beschuldigte ich diese, aber ich sollte diese Fehlermeldungen beim nächsten Mal wirklich sorgfältiger lesen. (. Es gab eine weitere Tabelle, die mit dem Kontexttabelle verknüpft)

Wie dem auch sei, diese Beziehungen zu löschen, dieser Code ist genug:

foreach (var obj in CPE.Components.ToList()) 
{ 
    obj.Context.Load(); 
    foreach (var child in obj.Context.ToList()) { obj.Context.Remove(child); } 
    CPE.DeleteObject(obj); 
} 

ich die ToList() verwenden, aus Gewohnheit, btw. Es vermeidet einige Ausnahmen in Bezug auf die Richtung, in der .NET Datensätze liest. Jetzt füllt es zuerst eine Liste und geht dann durch die Liste in die Richtung, die ich bevorzuge ...

Verwandte Themen