See Also

TableMappings Members  | RedGate.SQLDataCompare.Engine Namespace

Requirements

Namespace: RedGate.SQLDataCompare.Engine

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

Assembly: RedGate.SQLDataCompare.Engine (in RedGate.SQLDataCompare.Engine.dll)

Language

Visual Basic

C#

C++

C++/CLI

Show All

See Also Requirements Languages RedGate.SQLDataCompare.Engine Send comments on this topic.

TableMappings Class

RedGate.SQLDataCompare.Engine Namespace : TableMappings Class (RedGate.SQLDataCompare.Engine)

Holds mappings for tables or views in a schema.

For a list of all members of this type, see TableMappings members.

Object Model

Inheritance Hierarchy

System.Object
   RedGate.SQLCompare.Engine.Mappings
      RedGate.SQLDataCompare.Engine.TableMappings

Syntax

[Visual Basic]
<DefaultMemberAttribute("Item")> Public Class TableMappings    Inherits Mappings    Implements ICancellable 
[C#]
[DefaultMemberAttribute("Item")] public class TableMappings : Mappings, ICancellable 
[C++]
[DefaultMemberAttribute("Item")] public __gc class TableMappings : public Mappings, ICancellable 
[C++/CLI]
[DefaultMemberAttribute("Item")] public ref class TableMappings : public Mappings, ICancellable 

Example

[C#] 

using System; 
using RedGate.SQLCompare.Engine; 
using RedGate.SQLDataCompare.Engine; 
using RedGate.SQLDataCompare.Engine.ResultsStore; 
  
namespace RedGate.SQLDataCompare.ExampleTests 

    public class TableMappingExample 
    { 
        public void RunExample() 
        { 
            Database db1=new Database(); 
            Database db2=new Database(); 
            ComparisonSession session=new ComparisonSession(); 
            TableMappings mappings = new TableMappings();         
            
            try 
            { 
                db1.RegisterForDataCompare(new ConnectionProperties(".", "WidgetDev")); 
                db2.RegisterForDataCompare(new ConnectionProperties(".", "WidgetLive"));                                     
                 
                // Create the mappings between a certain table 
                TableMapping tableMapping = (TableMapping)mappings.Join(db1.Tables["[dbo].[WidgetPrices]"], db2.Tables["[dbo].[WidgetPrices]"]); 
  
                // Set the custom comparison key for the table 
                tableMapping.MatchingMappings.Clear(); 
                tableMapping.MatchingMappings.Add(tableMapping.FieldMappings["WidgetID"]); 
                tableMapping.RefreshMappingStatus(); 
  
                // Set the where clause for the comparison 
                tableMapping.Where = new WhereClause("Active = 'Y'"); 
  
                // Peform the comparison 
                session.CompareDatabases(db1, db2, mappings); 
                 
                TableDifference difference=session.TableDifferences["[dbo].[WidgetPrices]"]; 
  
                // Loop through all the rows 
                foreach(Row row in difference.ResultsStore) 
                { 
                    Console.WriteLine("Row {0} type {1}", row.Index, row.Type.ToString()); 
                    int i=0; 
                    foreach (FieldPair field in difference.ResultsStore.Fields) 
                    { 
                        int field1=field.OrdinalInResults1; 
                        int field2=field.OrdinalInResults2; 
                 
                        if (field1 != field2) 
                        { 
                            //get the values 
                            object value1=row.Values[field1]; 
                            object value2=row.Values[field2]; 
                            if (value1 == null) 
                                value1="NULL"; 
                            if (value2 == null) 
                                value2="NULL"; 
                            Console.WriteLine("{0}\t{1}\t{2}\t{3}",field.Field(false).Name, value1.ToString(),row.FieldDifferent(i)?"<>":"==",  value2.ToString()); 
                        } 
                        else 
                        { 
                            //this is part of the custom index we are comparing on 
                            object value=row.Values[field1];     
                            Console.WriteLine("*{0}\t{1}",field.Field(false).Name, value.ToString()); 
                        } 
                        i++; 
                    } 
                } 
            } 
            finally 
            { 
                session.Dispose(); 
                db1.Dispose(); 
                db2.Dispose(); 
            } 
        } 
    } 

    

[Visual Basic] 

Option Explicit On

Imports RedGate.SQLCompare.Engine
Imports RedGate.SQLDataCompare.Engine
Imports RedGate.SQLDataCompare.Engine.ResultsStore

Public Class TableMappingExample
    Sub RunExample()
        Dim session As New ComparisonSession

        'register the databases for comparison
        Dim db1 As New Database
        Dim db2 As New Database

        db1.RegisterForDataCompare(New ConnectionProperties(".", "WidgetDev"))
        db2.RegisterForDataCompare(New ConnectionProperties(".", "WidgetLive"))

        Dim mappings As New TableMappings

        Dim tableMapping As tableMapping = mappings.Join(db1.Tables("[dbo].[WidgetPrices]"), db2.Tables("[dbo].[WidgetPrices]"))

        ' Set the custom comparison key for the table
        tableMapping.MatchingMappings.Clear()
        tableMapping.MatchingMappings.Add(tableMapping.FieldMappings("WidgetID"))
        tableMapping.RefreshMappingStatus()

        ' Set the where clause for the comparison
        tableMapping.Where = New WhereClause("Active = 'Y'")

        'compare the databases
        session.CompareDatabases(db1, db2, mappings)

        Dim mapping As TableMapping


        Dim difference As TableDifference = session.TableDifferences("[dbo].[WidgetPrices]")
        Dim row As row
        For Each row In difference.ResultsStore 'loop through all the rows
            Dim field As FieldPair
            Dim i As Int32 = 0
            Console.WriteLine("Row {0} type {1}", row.Index, row.Type.ToString())
            For Each field In difference.ResultsStore.Fields
                'work out where about in the results the field data is stored
                'if we were comparing identical records, or records present in one
                'database but not the other then we would not need to
                'use the OrdinalInResults1 and OrdinalInResults2 properties
                'but just OrdinalInResults
                Dim field1 As Int32 = field.OrdinalInResults1
                Dim field2 As Int32 = field.OrdinalInResults2

                If (field1 <> field2) Then
                    'get the values
                    Dim value1 As Object = row.Values(field1)
                    Dim value2 As Object = row.Values(field2)
                    If (value1 Is Nothing) Then
                        value1 = "NULL"
                    End If
                    If (value2 Is Nothing) Then
                        value2 = "NULL"
                    End If
                    If row.FieldDifferent(i) Then
                        Console.WriteLine("{0}:{1} <> {2}", field.Field(False).Name, value1.ToString(), value2.ToString())
                    Else
                        Console.WriteLine("{0}:{1} == {2}", field.Field(False).Name, value1.ToString(), value2.ToString())
                    End If
                Else
                    'this is part of the unique index we are comparing on
                    Dim value As Object = row.Values(field1)
                    Console.WriteLine("*{0}:{1}", field.Field(False).Name, value.ToString())
                End If
                i += 1
            Next
        Next
        'dispose of the objects
        session.Dispose()
        db1.Dispose()
        db2.Dispose()
    End Sub
End Class

Requirements

Namespace: RedGate.SQLDataCompare.Engine

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

Assembly: RedGate.SQLDataCompare.Engine (in RedGate.SQLDataCompare.Engine.dll)

See Also

TableMappings Members  | RedGate.SQLDataCompare.Engine Namespace

 

 


© 2003 - 2006 Red Gate Software Ltd. All Rights Reserved.