IDifferencer.CompareGraphs(Object, Object) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Confronta due grafici (definiti di seguito) e restituisce la differenza.
Il risultato di CompareGraphs rappresenta la differenza da applicare alla destinazione per ottenere l'origine. (ad esempio, target + diff => source)
Per supportare sia SMO che SFC, l'input viene lasciato come tipo 'oggetto'. Tuttavia, consente solo SqlSmoObject o SfcObject. Questo metodo genera InvalidArgumentException se il tipo degli oggetti specificati non è valido.
Due grafici sono simili (ad esempio, hanno lo stesso tipo), se hanno la stessa struttura a tutti i livelli, il che significa che ogni nodo ha lo stesso tipo di elementi figlio e proprietà. Se i grafici specificati non sono confrontabili, questo metodo genera InvalidArgumentException.
Quando un nodo in ogni grafo ha la stessa identità (rappresentata da Urn sia in SMO che in SFC), si dice che sia identica. Quando due nodi identici hanno gli stessi valori per tutte le proprietà, si dice che siano equivalenti (ignorare gli elementi figlio che hanno).
Durante il confronto, questo servizio esaminerà tutti i nodi pertinenti. La pertinenza dei nodi e delle proprietà è specifica del dominio. Per ogni coppia di nodi identici da entrambi i lati, il servizio confronta tutte le proprietà di rilevent. Se i nodi non sono equivalenti, al risultato viene aggiunto un elemento DiffEntry con DiffType.Updated. I figli verranno quindi confrontati.
Quando un elemento figlio viene visualizzato nell'origine ma non nella destinazione, al risultato viene aggiunto un elemento DiffEntry con DiffType.Created, analogamente a DiffType.Deleted.
Il differencer illustra gli elementi figlio (di tutti i livelli) di un nodo creato o eliminato. Le voci figlio sono incluse nel risultato.
Infine, ogni coppia di figli identici viene controllata per verificare l'equivalenza.
CompareGraphs() viene ridimensionato con grafici molto grandi e non mantiene gli interi grafici in memoria, se possibile. Le applicazioni che usano questo servizio non devono avere logica che dipende dall'ordinamento dei risultati, che possono essere diversi quando l'implementazione cambia in futuro per un'ulteriore ottimizzazione.
L'implementazione corrente guida l'albero in modo in ritardo.The current implementation walks the tree in late-activate fashion. La reimpostazione del risultato di IEnumerator potrebbe comportare la riesezione dei grafici.
Il risultato IDiffgram non è thread-safe.
public Microsoft.SqlServer.Management.Sdk.Differencing.IDiffgram CompareGraphs(object source, object target);
abstract member CompareGraphs : obj * obj -> Microsoft.SqlServer.Management.Sdk.Differencing.IDiffgram
Public Function CompareGraphs (source As Object, target As Object) As IDiffgram
Parametri
- source
- Object
Nodo radice del grafico di origine da confrontare.
- target
- Object
Nodo radice del grafico di destinazione da confrontare.