Ist das Löschen von einer LINQ DB löscht auch Datensätze in anderen Tabellen, die einen Fremdschlüssel Verband haben?

StackOverflow https://stackoverflow.com/questions/2009327

Frage

So an der Wurzel meiner DB habe ich eine Tabelle „Kunde“. Der Kunde hat Fremdschlüssel auf etwa 6-7 weitere Tische gehen wie Quittungen, Adressen, Dokumente usw. Wenn ich einen Kunden mit SubmitChanges löschen waren () wäre, dass alle diese Datensätze mit dem Fremdschlüssel Verein suchen und löschen Sie sie auch, oder brauche ich, um wie 6-Abfragen zu tun?

War es hilfreich?

Lösung

Dies geschieht nur, wenn Sie Ihre Datenbank-Tabellen eingerichtet haben, dies zu tun mit Cascading Deletionen (d on delete cascade).

Weitere Informationen finden Sie unter Einfügen, Aktualisieren und Löschen von Operationen (LINQ to SQL) :

  

LINQ to SQL nicht unterstützt oder   erkennen kaskadenLöschVorgänge.   Wenn Sie eine Zeile in einer Tabelle löschen   das hat Einschränkungen dagegen, Sie   muß entweder die ON DELETE CASCADE eingestellt   herrschen in dem Fremdschlüssel-Constraint in   die Datenbank, oder verwenden Sie Ihren eigenen Code   Löschen Sie zuerst die untergeordneten Objekte, dass   verhindern, dass das übergeordnete Objekt entfernt,   gelöscht. Andernfalls ist eine Ausnahme   geworfen.

Andere Tipps

Welche Kaskade Aktion haben Sie auf diesen Fremdschlüsselbeziehungen ??

Standardmäßig sind die meisten Datenbanksysteme (einschließlich SQL Server, die ich nehme an, Sie verwenden) nicht irgendwelche „ON DELETE CASCADE“ oder eine andere Aktion -. So in diesem Fall nichts passieren würde,

Diese T-SQL-Abfrage werden Ihnen Ihre Fremdschlüsselbeziehungen zeigt, und ob von einer DELETE oder UPDATE referenziellen Aktionen definiert:

SELECT
    name 'FK Constraint',
    OBJECT_NAME(parent_object_id) 'Parent table',
    OBJECT_NAME(referenced_object_id) 'Referenced table',
    delete_referential_action ,
    delete_referential_action_desc ,
    update_referential_action ,
    update_referential_action_desc 
FROM 
    sys.foreign_keys

Wenn Sie wollen etwas passiert, Sie müssen sicherstellen, werden diese FK Beziehungen gesetzt, diese kaskadierende Aktionen verwenden.

Sehen Sie MSDN-Dokumentation auf Cascading Referentielle Integritätsbedingungen mehr Details.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top