Vorgehensweise: Anzeigen und Ändern von Artikeleigenschaften (RMO-Programmierung)
Sie können Artikel ändern und mithilfe von Replikationsverwaltungsobjekten (RMO) programmgesteuert auf ihre Eigenschaften zugreifen. Welche RMO-Klassen Sie zum Anzeigen oder Ändern von Artikeleigenschaften verwenden, hängt vom Typ der Veröffentlichung ab, zu der der Artikel gehört.
So zeigen Sie die Eigenschaften eines Artikels an, der zu einer Snapshot- oder einer Transaktionsveröffentlichung gehört, oder ändern sie
Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection-Klasse verwenden.
Erstellen Sie eine Instanz der TransArticle-Klasse.
Legen Sie die Eigenschaften Name, PublicationName und DatabaseName fest.
Legen Sie die Verbindung aus Schritt 1 für die ConnectionContext-Eigenschaft fest.
Rufen Sie die LoadProperties-Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode false zurückgibt, wurden entweder die Artikeleigenschaften in Schritt 3 falsch definiert, oder der Artikel ist nicht vorhanden.
(Optional) Um Eigenschaften zu ändern, legen Sie einen neuen Wert für eine der definierbaren TransArticle-Eigenschaften fest.
(Optional) Wenn Sie den Wert true für CachePropertyChanges angegeben haben, rufen Sie die CommitPropertyChanges-Methode auf, um die Änderungen auf dem Server einzutragen. Wenn Sie den Wert false für CachePropertyChanges (die Standardeinstellung) angegeben haben, werden die Änderungen sofort an den Server gesendet.
So zeigen Sie die Eigenschaften eines Artikels an, der zu einer Mergeveröffentlichung gehört, oder ändern sie
Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection-Klasse verwenden.
Erstellen Sie eine Instanz der MergeArticle-Klasse.
Legen Sie die Eigenschaften Name, PublicationName und DatabaseName fest.
Legen Sie die Verbindung aus Schritt 1 für die ConnectionContext-Eigenschaft fest.
Rufen Sie die LoadProperties-Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode false zurückgibt, wurden entweder die Artikeleigenschaften in Schritt 3 falsch definiert, oder der Artikel ist nicht vorhanden.
(Optional) Um Eigenschaften zu ändern, legen Sie einen neuen Wert für eine der definierbaren MergeArticle-Eigenschaften fest.
(Optional) Wenn Sie den Wert true für CachePropertyChanges angegeben haben, rufen Sie die CommitPropertyChanges-Methode auf, um die Änderungen auf dem Server einzutragen. Wenn Sie den Wert false für CachePropertyChanges (die Standardeinstellung) angegeben haben, werden die Änderungen sofort an den Server gesendet.
Beispiel
In diesem Beispiel wird ein Mergeartikel geändert, um den vom Artikel verwendeten Geschäftslogikhandler anzugeben.
// 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
Siehe auch