Как просмотреть и изменить свойства статьи (программирование объектов RMO)

Статьи можно изменять программно, кроме того, с помощью объектов RMO можно программно получить доступ к их свойствам. Конкретные классы объектов RMO, используемые для этого, зависят от типа публикации, которой принадлежит статья.

Просмотр или изменение свойств статьи, принадлежащей публикации моментальных снимков или публикации транзакций

  1. Создайте соединение с издателем с помощью класса ServerConnection.

  2. Создайте экземпляр класса TransArticle.

  3. Установите свойства Name, PublicationName и DatabaseName.

  4. Установите полученное на шаге 1 соединение в качестве значения свойства ConnectionContext.

  5. Чтобы получить свойства объекта, вызовите метод LoadProperties. Если этот метод возвращает false, то либо на шаге 3 были неверно определены свойства статьи, либо статья не существует.

  6. Чтобы изменить свойства, установите новое значение для одного из свойств TransArticle, которое можно установить (необязательно).

  7. Если для свойства CachePropertyChanges указать значение true, то для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно). Если для свойства CachePropertyChanges указать значение false (по умолчанию), изменения будут отправлены на сервер немедленно.

Просмотр или изменение свойств статьи, принадлежащей публикации слиянием

  1. Создайте соединение с издателем с помощью класса ServerConnection.

  2. Создайте экземпляр класса MergeArticle.

  3. Установите свойства Name, PublicationName и DatabaseName.

  4. Установите полученное на шаге 1 соединение в качестве значения свойства ConnectionContext.

  5. Чтобы получить свойства объекта, вызовите метод LoadProperties. Если этот метод возвращает false, то либо на шаге 3 были неверно определены свойства статьи, либо статья не существует.

  6. Чтобы изменить свойства, установите новое значение для одного из свойств MergeArticle, которое можно установить (необязательно).

  7. Если для свойства CachePropertyChanges указать значение true, то для фиксирования изменений на сервере необходимо вызвать метод CommitPropertyChanges (необязательно). Если для свойства CachePropertyChanges указать значение false (по умолчанию), изменения будут отправлены на сервер немедленно.

Пример

В этом примере изменяется статья публикации слиянием, при этом указывается обработчик бизнес-логики, используемый этой статьей.

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