Procédure : afficher et modifier les propriétés d'articles (programmation RMO)

Vous pouvez modifier des articles et accéder à leurs propriétés, par programme, en utilisant les objets RMO (Replication Management Objects). Les classes RMO à utiliser pour afficher ou modifier les propriétés d'un article dépendent du type de publication auquel l'article appartient.

Pour afficher ou modifier les propriétés d'un article qui appartient à une publication transactionnelle ou de capture instantanée

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection.

  2. Créez une instance de la classe TransArticle.

  3. Définissez les propriétés Name, PublicationName et DatabaseName.

  4. Définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext.

  5. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, soit les propriétés de l'article ont été définies de manière incorrecte à l'étape 3, soit l'article n'existe pas.

  6. (Facultatif) Pour modifier des propriétés, modifiez la valeur d'une des propriétés TransArticle qui peuvent être définies.

  7. (Facultatif) Si vous avez spécifié la valeur true pour CachePropertyChanges, appelez la méthode CommitPropertyChanges pour valider les modifications sur le serveur. Si vous avez spécifié la valeur false pour CachePropertyChanges (valeur par défaut), les modifications sont envoyées immédiatement au serveur.

Pour afficher ou modifier les propriétés d'un article qui appartient à une publication de fusion

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection.

  2. Créez une instance de la classe MergeArticle.

  3. Définissez les propriétés Name, PublicationName et DatabaseName.

  4. Définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext.

  5. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, soit les propriétés de l'article ont été définies de manière incorrecte à l'étape 3, soit l'article n'existe pas.

  6. (Facultatif) Pour modifier des propriétés, modifiez la valeur d'une des propriétés MergeArticle qui peuvent être définies.

  7. (Facultatif) Si vous avez spécifié la valeur true pour CachePropertyChanges, appelez la méthode CommitPropertyChanges pour valider les modifications sur le serveur. Si vous avez spécifié la valeur false pour CachePropertyChanges (valeur par défaut), les modifications sont envoyées immédiatement au serveur.

Exemple

Cet exemple modifie un article de fusion pour spécifier le gestionnaire de logique métier utilisé par l'article.

         // 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