IDifferencer Interfaccia

Definizione

Questa interfaccia definisce il servizio differenziale negli oggetti SFC e SMO. Il servizio analizza e confronta due grafici specificati e restituisce un Diffgram (IEnumerable<DiffEntry>) che rappresenta la differenza.

È attivato in ritardo, vale a dire che non cammina i grafici fino a quando non si accede all'enumeratore.

public interface IDifferencer
type IDifferencer = interface
Public Interface IDifferencer

Metodi

Nome Descrizione
CompareGraphs(Object, Object)

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.

IsTypeEmitted(DiffType)

True per indicare che le voci DiffType specificate sono incluse nel diffgramma dei risultati.

SetTypeEmitted(DiffType)

Impostare l'oggetto DiffType specificato da includere nel diffgramma del risultato. Questa opzione influisce su DiffEntry solo se è impostata prima della chiamata di CompareGraphs().

UnsetTypeEmitted(DiffType)

Unset (o clear) l'oggetto DiffType specificato da escludere dal diffgramma del risultato. Questa opzione influisce su DiffEntry solo se è impostata prima della chiamata di CompareGraphs().

Si applica a