Microsoft.SqlServer.Management.Sdk.Differencing.SPI Namespace



A provider that enables a partial graph to participate in differencing with a complete graph.

A partial graph is a graph that does not contain all properties because some values are not set, or the values are set to some default values.

Before a graph is walked, the differencer looks up all known AvailablePropertyValueProvider in the system and asks if any of the providers supports one of the graphs to be compared. If a provider indicates that it supports the graph, the graph is a partial graph.

When a partial graph is walked, the differencer calls
IsValueAvailable() for each property of each object. If true is returned, the property is compared. If false is returned, then the property is skipped.


The provider supplies sorting


An implementation of NodeItemNamesAdapterProvider that is based on SfcMetadataDiscovery.


The adapter from which the list of names of relations and properties is obtained. It is the metadata counterpart of ISimpleNode.


The provider supplies sorting


This class is an entry points for differencer to obtains its provider. Domain specific provider of the Diff service can be registered into this class.

A provider supplies domain specific information or logic so that the differencer can handle different graph type and runtime behaviour correctly.

A provider must be registered before the compare method is invoked.


The diff algorithm walks the graphs with the help of ISimpleSfcNode. The object model can either directly implement the interface, or return a wrapper.

If a graph to be compared natively implements ISimpleSfcNode, the node can be returned directly. Otherwise, a wrapper should be returned.



Base interface for all Differencing providers.