IDifferencer.CompareGraphs(Object, Object) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Compara dos gráficos (definidos a continuación) y devuelve la diferencia.
El resultado de CompareGraphs representa la diferencia que se va a aplicar al destino para obtener el origen. (es decir, destino + diff => origen)
Para admitir SMO y SFC, la entrada se deja como tipo "object". Sin embargo, solo permite SqlSmoObject o SfcObject. Este método produce InvalidArgumentException si el tipo de los objetos especificados no es válido.
Se dice que dos gráficos son comparables (es decir, tienen el mismo tipo), si tienen la misma estructura en todos los niveles, lo que significa que cada nodo tiene el mismo tipo de elementos secundarios y propiedades. Si los gráficos especificados no son comparables, este método produce InvalidArgumentException.
Cuando un nodo de cada gráfico tiene la misma identidad (representada por Urn en SMO y SFC), se dice que es idéntica. Cuando dos nodos idénticos tienen los mismos valores para todas las propiedades, se dice que son equivalentes (omitan los elementos secundarios que tienen).
Durante la comparación, este servicio examinará todos los nodos pertinentes. (La relevancia de los nodos y las propiedades es específica del dominio). Para cada par de nodos idénticos de ambos lados, el servicio compara todas las propiedades relevent. Si los nodos no son equivalentes, se agrega un valor DiffEntry con DiffType.Updated al resultado. A continuación, se compararán los elementos secundarios.
Cuando un elemento secundario aparece en el origen pero no en el destino, se agrega un valor DiffEntry con DiffType.Created al resultado, del mismo modo para DiffType.Deleted.
El diferenciador recorre los elementos secundarios (de todo el nivel) de un nodo creado o eliminado. Las entradas secundarias se incluyen en el resultado.
Por último, se comprueba la equivalencia de cada par de elementos secundarios idénticos.
CompareGraphs() se escala a grafos muy grandes y no conserva todos los gráficos en memoria si es posible. Las aplicaciones que usan este servicio no deben tener lógica que dependa del orden de los resultados, que puede ser diferente cuando la implementación cambia en el futuro para una mayor optimización.
La implementación actual recorre el árbol de forma de activación tardía. Restablecer el resultado IEnumerator puede dar lugar a que los gráficos se vuelvan a recorrer.
El IDiffgram de resultado no es seguro para subprocesos.
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
Parámetros
- source
- Object
Nodo raíz del gráfico de origen que se va a comparar.
- target
- Object
Nodo raíz del gráfico de destino que se va a comparar.