IDifferencer.CompareGraphs(Object, Object) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
比較兩個圖(如下定義)並返回差值。
CompareGraphs 的結果代表為取得來源時,需對目標施加的差異。 (即目標 + 微分 => 來源)
為了同時支援 SMO 與 SFC,輸入仍保留為「物件」類型。 然而,它只允許 SqlSmoObject 或 SfcObject。 若指定物件的型別無效,此方法會拋出 InvalidArgumentException。
若兩個圖在所有層級結構相同,即每個節點擁有相同類型的子圖與屬性,則稱它們為可比較圖(即具有相同型態)。 若指定的圖無法比較,此方法會拋出 InvalidArgumentException。
當每個圖上的節點具有相同的身份(在 SMO 與 SFC 中皆以 Urn 表示)時,稱為相同。 當兩個相同的節點在所有屬性上都擁有相同值時,稱為等價的(忽略它們所擁有的子節點)。
在比較過程中,本服務將檢視所有相關節點。 (節點與屬性的相關性則依領域而異。)對於兩側的每對相同節點,服務會比較所有相關的屬性。 若節點不等價,則會加入帶有 DiffType.Updated 的 DiffEntry 於結果中。 孩子們會被比較。
當子節點出現在來源但不在目標時,會加入帶有 DiffType.Created 的 DiffEntry 到結果中,DiffType.Deleted 亦然。
差異器會讓已建立或刪除節點的子節點(各層級)行走。 兒童作品已包含在結果中。
最後,檢查每對相同的子節點是否等價。
CompareGraphs() 可擴展到非常大的圖,且如果可能的話不會保留整個圖在記憶體中。 使用此服務的應用程式不應有依賴於結果排序的邏輯,因為未來實作變更以進行優化時,排序可能會有所不同。
目前的實作是以延遲啟動的方式走過樹。 重置結果 IEnumerator 可能會導致圖再次被行走。
結果的 IDiffgram 並非執行緒安全。
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
參數
- source
- Object
比較來源圖的根節點。
- target
- Object
比較目標圖的根節點。