Como exibir e modificar propriedades de artigo (Programação RMO)

Você pode modificar artigos e acessar suas propriedades programaticamente usando o RMO (Replication Management Objects). As classes RMO usadas para exibir ou modificar propriedades de artigo dependem do tipo de publicação a que o artigo pertence.

Para exibir ou modificar propriedades de um artigo que pertence a uma publicação de instantâneo ou transacional

  1. Crie uma conexão com o Publicador usando a classe ServerConnection.

  2. Crie uma instância da classe TransArticle.

  3. Defina as propriedades Name, PublicationName e DatabaseName.

  4. Defina a conexão da etapa 1 para a propriedade ConnectionContext.

  5. Chame o método LoadProperties para obter as propriedades do objeto. Se esse método retorna false, as propriedades de artigo na etapa 3 foram definidas incorretamente ou o artigo não existe.

  6. (Opcional) Para alterar propriedades, defina um novo valor para uma das propriedades TransArticle que podem ser definidas.

  7. (Opcional) Se você especificou um valor de true para CachePropertyChanges, chame o método CommitPropertyChanges para confirmar as alterações no servidor. Se você especificou um valor de false para CachePropertyChanges (o padrão), as alterações serão enviadas imediatamente ao servidor.

Para exibir ou modificar propriedades de um artigo que pertence a uma publicação de mesclagem

  1. Crie uma conexão com o Publicador usando a classe ServerConnection.

  2. Crie uma instância da classe MergeArticle.

  3. Defina as propriedades Name, PublicationName e DatabaseName.

  4. Defina a conexão da etapa 1 para a propriedade ConnectionContext.

  5. Chame o método LoadProperties para obter as propriedades do objeto. Se esse método retorna false, as propriedades de artigo na etapa 3 foram definidas incorretamente ou o artigo não existe.

  6. (Opcional) Para alterar propriedades, defina um novo valor para uma das propriedades MergeArticle que podem ser definidas.

  7. (Opcional) Se você especificou um valor de true para CachePropertyChanges, chame o método CommitPropertyChanges para confirmar as alterações no servidor. Se você especificou um valor de false para CachePropertyChanges (o padrão), as alterações serão enviadas imediatamente ao servidor.

Exemplo

Esse exemplo altera um artigo de mesclagem para especificar o manipulador de lógica de negócios usado pelo artigo.

            // Define the Publisher, publication, and article names.
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string publicationDbName = "AdventureWorks2008R2";
            string articleName = "SalesOrderHeader";
            
            // Set the friendly name of the business logic handler.
            string customLogic = "OrderEntryLogic";

            MergeArticle article = new MergeArticle();
            
            // Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(publisherName);

            try
            {
                // Connect to the Publisher.
                conn.Connect();

                // Set the required properties for the article.
                article.ConnectionContext = conn;
                article.Name = articleName;
                article.DatabaseName = publicationDbName;
                article.PublicationName = publicationName;

                // Load the article properties.
                if (article.LoadProperties())
                {
                    article.ArticleResolver = customLogic;
                }
                else
                {
                    // Throw an exception of the article does not exist.
                    throw new ApplicationException(String.Format(
                    "{0} is not published in {1}", articleName, publicationName));
                }
                
            }
            catch (Exception ex)
            {
                // Do error handling here and rollback the transaction.
                throw new ApplicationException(String.Format(
                    "The business logic handler {0} could not be associated with " +
                    " the {1} article.",customLogic,articleName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the Publisher, publication, and article names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim articleName As String = "SalesOrderHeader"

' Set the friendly name of the business logic handler.
Dim customLogic As String = "OrderEntryLogic"

Dim article As MergeArticle = New MergeArticle()

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the article.
    article.ConnectionContext = conn
    article.Name = articleName
    article.DatabaseName = publicationDbName
    article.PublicationName = publicationName

    ' Load the article properties.
    If article.LoadProperties() Then
        article.ArticleResolver = customLogic
    Else
        ' Throw an exception of the article does not exist.
        Throw New ApplicationException(String.Format( _
         "{0} is not published in {1}", articleName, publicationName))
    End If

Catch ex As Exception
    ' Do error handling here and rollback the transaction.
    Throw New ApplicationException(String.Format( _
     "The business logic handler {0} could not be associated with " + _
     " the {1} article.", customLogic, articleName), ex)
Finally
    conn.Disconnect()
End Try