2009-05-15 4 views
0

Ich führe den Code, um den Änderungssatz zu erhalten, bevor ein linq submit change-Aufruf.GetChangeSet ChangeSet, Linq In welcher Reihenfolge werden Änderungen angewendet?

private void OnSubmitHandleReplication() 
{ 
    System.Data.Linq.ChangeSet changes = GetChangeSet(); 
    //Do something with change set 
} 

Im etwas Abschnitt muss ich wissen müssen, in welcher Reihenfolge die Dinge in vorgelegt, und in welcher Reihenfolge sie in die Datenbank schreiben wird. Ich sehe die Änderung Set hat einen .Inserted, .Updated und .Deleted . Ich nehme an, dass diese in der Reihenfolge sind, in der sie angewendet werden. Jedoch möchte ich die über alle Reihenfolge wissen. Ich nehme an, es könnte Insert, Update, dann 3 weitere Inserts sein oder etwas, das zwischen diesen Sammlungen hin und her springt.

Update 1

Sorry, dachte der Titel war klar, Linq

Update auf SQL 2

Der Grund, warum ich tue dies, diese später zu einem anderen DB zu wiederholen ist.

+0

Linq zu SQL oder Entity-Framework? Sieht aus wie linq zu sql, aber nicht sicher –

Antwort

0

Das ist ziemlich schwierig.

Sie müssten ziemlich weit in den Change Tracker mit Reflexion graben, um die tatsächliche Reihenfolge zu erhalten.

In Bezug auf die Reihenfolge der Einfügung, Aktualisierung, Löschung, Einfügungen passieren vor dem Löschen, so dass Sie auf einzigartige Einschränkungen achten müssen (was wahrscheinlich bedeutet, dass Sie aktualisieren mussten statt neu zu erstellen).

EDIT

Wenn Sie nur auf 'Replay' benötigen, sicher könnten Sie die Logging-Funktion verwenden.

+0

Könnten Sie die Protokollierungsfunktion erweitern? –

0

Sie können die Protokollierung in Linq2SQL aktivieren, indem Sie YourDataContext.Log = Console.Out oder einen anderen kompatiblen Ausgabestream festlegen. Jede SQL-Abfrage, die LINQ an die Datenbank sendet, wird dort gedruckt. Sie sollten dies nur zum Debuggen Ihres Problems verwenden, da LINQ ziemlich viele Anfragen sendet :)

Edit: In Bezug auf die Reihenfolge der Aktionen, kann ich Ihnen nicht weiter helfen, ich schaute nie auf diese Abfragen mehr als ich hatte zu.