Procedura: Visualizzazione e modifica delle proprietà degli articoli (programmazione RMO)

È possibile modificare gli articoli e accedere alle relative proprietà a livello di programmazione utilizzando oggetti RMO (Replication Management Objects). Le classi RMO utilizzate per la visualizzazione o la modifica degli articoli dipendono dal tipo di pubblicazione cui appartiene l'articolo.

Per visualizzare o modificare le proprietà di un articolo che appartiene a una pubblicazione snapshot o transazionale

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection.

  2. Creare un'istanza della classe TransArticle.

  3. Impostare le proprietà Name, PublicationName e DatabaseName.

  4. Impostare la connessione del passaggio 1 per la proprietà ConnectionContext.

  5. Chiamare il metodo LoadProperties per ottenere le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà dell'articolo sono state definite in modo non corretto nel passaggio 3 oppure l'articolo non esiste.

  6. (Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una delle proprietà dell'oggetto TransArticle che è possibile impostare.

  7. (Facoltativo) Se si specifica un valore true per CachePropertyChanges, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server. Se si specifica un valore false per CachePropertyChanges (impostazione predefinita), le modifiche vengono inviate immediatamente al server.

Per visualizzare o modificare le proprietà di un articolo che appartiene a una pubblicazione di tipo merge

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection.

  2. Creare un'istanza della classe MergeArticle.

  3. Impostare le proprietà Name, PublicationName e DatabaseName.

  4. Impostare la connessione del passaggio 1 per la proprietà ConnectionContext.

  5. Chiamare il metodo LoadProperties per ottenere le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà dell'articolo sono state definite in modo non corretto nel passaggio 3 oppure l'articolo non esiste.

  6. (Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una delle proprietà dell'oggetto MergeArticle che è possibile impostare.

  7. (Facoltativo) Se si specifica un valore true per CachePropertyChanges, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server. Se si specifica un valore false per CachePropertyChanges (impostazione predefinita), le modifiche vengono inviate immediatamente al server.

Esempio

In questo esempio viene modificato un articolo di merge per specificare il gestore della regola di business utilizzato dall'articolo.

            // Define the Publisher, publication, and article names.
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string publicationDbName = "AdventureWorks";
            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 = "AdventureWorks"
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