IDifferencer 인터페이스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 인터페이스는 SFC 및 SMO 개체에서 차등 서비스를 정의합니다. 이 서비스는 지정된 두 그래프를 걷고 비교하며 차이를 나타내는 Diffgram(IEnumerable<DiffEntry>)을 반환합니다.
늦게 활성화되므로 열거자에 액세스할 때까지 그래프를 걷지 않습니다.
public interface IDifferencer
type IDifferencer = interface
Public Interface IDifferencer
메서드
| Name | Description |
|---|---|
| CompareGraphs(Object, Object) |
두 그래프(아래에 정의됨)를 비교하고 차이를 반환합니다. CompareGraphs의 결과는 원본을 얻기 위해 대상에 적용할 차이를 나타냅니다. (즉, target + diff => source) SMO와 SFC를 모두 지원하기 위해 입력은 '개체' 형식으로 남습니다. 그러나 SqlSmoObject 또는 SfcObject만 허용합니다. 지정한 개체의 형식이 잘못된 경우 이 메서드는 InvalidArgumentException을 throw합니다. 두 그래프는 모든 수준에서 구조가 같으면 비교 가능한 그래프(즉, 형식이 동일함)라고 합니다. 즉, 각 노드의 자식 및 속성 형식이 동일합니다. 지정된 그래프와 비교할 수 없는 경우 이 메서드는 InvalidArgumentException을 throw합니다. 각 그래프의 노드에 동일한 ID(SMO 및 SFC 모두에서 Urn으로 표시됨)가 있는 경우 동일한 것으로 간주됩니다. 두 개의 동일한 노드가 모든 속성에 대해 동일한 값을 갖는 경우 동일한 노드라고 합니다(있는 자식은 무시). 비교하는 동안 이 서비스는 모든 관련 노드를 검사합니다. (노드 및 속성의 관련성은 도메인에 따라 다릅니다.) 양쪽에서 동일한 노드의 각 쌍에 대해 서비스는 모든 relevent 속성을 비교합니다. 노드가 동일하지 않으면 DiffType.Updated가 있는 DiffEntry가 결과에 추가됩니다. 그런 다음 자식이 비교됩니다. 자식이 원본에 표시되지만 대상에는 나타나지 않으면 DiffType.Created가 있는 DiffEntry가 DiffType.Deleted와 마찬가지로 결과에 추가됩니다. Differencer는 만든 노드 또는 삭제된 노드의 자식(모든 수준)을 안내합니다. 자식 항목이 결과에 포함됩니다. 마지막으로, 동일한 자식의 각 쌍이 동등성을 검사합니다. CompareGraphs()는 매우 큰 그래프로 확장되며 가능하면 전체 그래프를 메모리에 유지하지 않습니다. 이 서비스를 사용하는 애플리케이션에는 결과의 순서에 따라 달라지는 논리가 없어야 합니다. 이는 향후 구현이 추가 최적화를 위해 변경될 때 다를 수 있습니다. 현재 구현은 늦게 활성화된 방식으로 트리를 안내합니다. 결과 IEnumerator를 다시 설정하면 그래프가 다시 탐색될 수 있습니다. 결과 IDiffgram은 스레드로부터 안전하지 않습니다. |
| IsTypeEmitted(DiffType) |
True이면 지정된 DiffType 항목이 결과 diffgram에 포함됨을 나타냅니다. |
| SetTypeEmitted(DiffType) |
결과 diffgram에 포함할 지정된 DiffType을 설정합니다. 이 옵션은 CompareGraphs()가 호출되기 전에 설정된 경우에만 DiffEntry에 영향을 줍니다. |
| UnsetTypeEmitted(DiffType) |
결과 diffgram에서 제외할 지정된 DiffType을 설정 해제(또는 지우기)합니다. 이 옵션은 CompareGraphs()가 호출되기 전에 설정된 경우에만 DiffEntry에 영향을 줍니다. |