IDifferencer Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Diese Schnittstelle definiert den Differenzialdienst für SFC- und SMO-Objekte. Der Dienst durchläuft und vergleicht zwei angegebene Diagramme und gibt ein Diffgram (IEnumerable<DiffEntry>) zurück, das den Unterschied darstellt.
Es ist spät aktiviert, was bedeutet, dass die Diagramme erst durchlaufen werden, wenn auf den Enumerationsator zugegriffen wird.
public interface IDifferencer
type IDifferencer = interface
Public Interface IDifferencer
Methoden
| Name | Beschreibung |
|---|---|
| CompareGraphs(Object, Object) |
Vergleicht zwei Diagramme (definiert unten) und gibt die Differenz zurück. Das Ergebnis von CompareGraphs stellt den Unterschied dar, der auf das Ziel angewendet werden soll, um die Quelle abzurufen. (d. h. target + diff => source) Um SMO und SFC zu unterstützen, bleiben die Eingaben als Objekttyp erhalten. Es lässt jedoch nur SqlSmoObject oder SfcObject zu. Diese Methode löst InvalidArgumentException aus, wenn der Typ der angegebenen Objekte ungültig ist. Zwei Diagramme sind vergleichbar (d. h. haben denselben Typ), wenn sie dieselbe Struktur auf allen Ebenen haben, was bedeutet, dass jeder Knoten denselben Typ von untergeordneten Elementen und Eigenschaften aufweist. Wenn die angegebenen Diagramme nicht vergleichbar sind, löst diese Methode InvalidArgumentException aus. Wenn ein Knoten auf jedem Diagramm dieselbe Identität hat (dargestellt durch Urn in SMO und SFC), wird es als identisch bezeichnet. Wenn zwei identische Knoten die gleichen Werte für alle Eigenschaften aufweisen, werden sie als gleichwertig bezeichnet (ignorieren Sie die untergeordneten Elemente). Während des Vergleichs überprüft dieser Dienst alle relevanten Knoten. (Die Relevanz von Knoten und Eigenschaften ist domänenspezifisch.) Für jedes Paar identischer Knoten von beiden Seiten vergleicht der Dienst alle relevent-Eigenschaften. Wenn die Knoten nicht gleichwertig sind, wird dem Ergebnis ein DiffEntry mit DiffType.Updated hinzugefügt. Die Kinder werden dann verglichen. Wenn ein untergeordnetes Element in der Quelle, aber nicht im Ziel angezeigt wird, wird dem Ergebnis ein DiffEntry mit DiffType.Created hinzugefügt, ebenso für DiffType.Deleted. Der Unterschied führt die untergeordneten Elemente (aller Ebenen) eines Knotens "Erstellt" oder "Gelöscht" durch. Die untergeordneten Einträge sind im Ergebnis enthalten. Schließlich wird jedes Paar identischer Kinder auf Äquivalenz überprüft. CompareGraphs() skaliert auf sehr große Diagramme und behält die gesamten Diagramme möglichst nicht im Arbeitsspeicher bei. Anwendungen, die diesen Dienst verwenden, sollten keine Logik haben, die von der Reihenfolge der Ergebnisse abhängt, die möglicherweise unterschiedlich sein können, wenn sich die Implementierung in Zukunft zur weiteren Optimierung ändert. Die aktuelle Implementierung führt die Struktur in spät aktivierter Weise durch. Das Zurücksetzen des Ergebnisses "IEnumerator" kann dazu führen, dass die Diagramme erneut durchlaufen werden. Das Ergebnis IDiffgram ist nicht threadsicher. |
| IsTypeEmitted(DiffType) |
True, um anzugeben, dass die angegebenen DiffType-Einträge im Ergebnisdiffgram enthalten sind. |
| SetTypeEmitted(DiffType) |
Legen Sie den angegebenen DiffType fest, der in das Ergebnisde diffgram aufgenommen werden soll. Diese Option wirkt sich nur auf diffEntry aus, wenn sie festgelegt ist, bevor CompareGraphs() aufgerufen wird. |
| UnsetTypeEmitted(DiffType) |
Aufheben (oder Löschen) des angegebenen DiffTypes, der aus dem Ergebnisdiffgram ausgeschlossen werden soll. Diese Option wirkt sich nur auf diffEntry aus, wenn sie festgelegt ist, bevor CompareGraphs() aufgerufen wird. |