GetReplicaMetadata Método
Obtiene un objeto de metadatos de réplica que se usa para tener acceso a los metadatos de réplica del almacén de metadatos.
Espacio de nombres: Microsoft.Synchronization.MetadataStorage
Ensamblado: Microsoft.Synchronization.MetadataStorage (en Microsoft.Synchronization.MetadataStorage.dll)
Sintaxis
'Declaración
Public Overrides Function GetReplicaMetadata ( _
idFormats As SyncIdFormatGroup, _
replicaId As SyncId _
) As ReplicaMetadata
'Uso
Dim instance As SqlMetadataStore
Dim idFormats As SyncIdFormatGroup
Dim replicaId As SyncId
Dim returnValue As ReplicaMetadata
returnValue = instance.GetReplicaMetadata(idFormats, _
replicaId)
public override ReplicaMetadata GetReplicaMetadata(
SyncIdFormatGroup idFormats,
SyncId replicaId
)
public:
virtual ReplicaMetadata^ GetReplicaMetadata(
SyncIdFormatGroup^ idFormats,
SyncId^ replicaId
) override
abstract GetReplicaMetadata :
idFormats:SyncIdFormatGroup *
replicaId:SyncId -> ReplicaMetadata
override GetReplicaMetadata :
idFormats:SyncIdFormatGroup *
replicaId:SyncId -> ReplicaMetadata
public override function GetReplicaMetadata(
idFormats : SyncIdFormatGroup,
replicaId : SyncId
) : ReplicaMetadata
Parámetros
- idFormats
Tipo: Microsoft.Synchronization. . :: . .SyncIdFormatGroup
Esquema de formato de identificador del proveedor.
- replicaId
Tipo: Microsoft.Synchronization. . :: . .SyncId
Identificador de la réplica asociada a estos metadatos.
Valor devuelto
Tipo: Microsoft.Synchronization.MetadataStorage. . :: . .ReplicaMetadata
Objeto de metadatos de réplica que se usa para tener acceso a los metadatos de réplica del almacén de metadatos.
Excepciones
Excepción | Condición |
---|---|
ObjectDisposedException | Este objeto se ha eliminado o no se ha inicializado correctamente. |
ArgumentNullException | idFormats o replicaId es una null Nothing nullptr unit es una referencia NULL (Nothing en Visual Basic). . |
SyncIdFormatMismatchException | El formato de replicaId no coincide con el formato especificado en idFormats, o idFormats no coincide con el esquema de formato de identificador que se usó cuando se inicializaron los metadatos de réplica. |
ArgumentOutOfRangeException | La longitud de un identificador especificado por idFormats es superior a 8000 bytes. |
InvalidOperationException | No se ha abierto o creado un almacén de metadatos. |
ReplicaMetadataInUseException | Hay una instancia de este objeto de metadatos de réplica que ya está activa. |
ReplicaMetadataNotFoundException | No se han encontrado los metadatos de réplica cuyo identificador es replicaId. |
Notas
Este método se usa para tener acceso a los metadatos de réplica que ya existen en el almacén de metadatos. Para crear nuevos metadatos de réplica en un almacén de metadatos, use InitializeReplicaMetadata.
Este método devuelve la implementación de la clase abstracta ReplicaMetadata proporcionada por Metadata Storage Services. Esta clase abstracta se puede usar para tener acceso a los metadatos de réplica que están almacenados en el archivo de base de datos de Sync Framework.
Para evitar que las aplicaciones realicen actualizaciones conflictivas simultáneas en el almacén de metadatos, no se permite la existencia de varias instancias pendientes de ReplicaMetadata para un identificador de réplica determinado. Las aplicaciones pueden tener acceso al mismo objeto ReplicaMetadata desde varios subprocesos, pero varios procesos no pueden tener acceso a los metadatos de réplica al mismo tiempo. Si ya existe una instancia pendiente de ReplicaMetadata para un identificador de réplica determinado, este método produce ReplicaMetadataInUseException.
Ejemplos
En el ejemplo siguiente se obtienen los metadatos de réplica de un objeto SqlMetadataStore cuando ya existen metadatos de réplica. A continuación, en el ejemplo se enumera el almacén de elementos y se buscan los metadatos para cada elemento.
public void NewStore(string StoreName, MetadataStore metaStore, bool metaStoreIsNew)
{
// Close the current store. This is necessary to release the ReplicaMetadata object held by this object.
Close(true);
// Keep the store name for later use.
_StoreName = StoreName;
// The absolute path of the item store is used as the replica ID.
string StoreAbsPath = Path.GetFullPath(StoreName);
// Get or initialize replica metadata in the metadata store.
_ContactMetadataStore = metaStore;
if (!metaStoreIsNew)
{
// The metadata store exists, so open it and get the replica metadata for the current replica.
// The replica ID is the absolute path of the item store.
_ContactReplicaMetadata = _ContactMetadataStore.GetReplicaMetadata(ContactIdFormatGroup,
new SyncId(StoreAbsPath));
// Read the contacts from the item store and the metadata store and save them in two
// in-memory lists. These lists are modified in memory by the methods in this object
// and committed to the disk when SaveChanges is called.
StreamReader contactReader;
contactReader = File.OpenText(StoreName);
Contact contact = ReadNextContact(contactReader);
while (null != contact)
{
ItemMetadata itemMeta = FindMetadata(contact);
_ContactList.Add(itemMeta.GlobalId, contact);
_ContactItemMetaList.Add(itemMeta.GlobalId, itemMeta);
contact = ReadNextContact(contactReader);
}
contactReader.Close();
}
else
{
// The metadata store does not exist, so create a new one.
// Create custom fields for First Name, Last Name, and Phone Number. These will be used
// as unique index fields for identifying items between the metadata store and the item store.
FieldSchema[] CustomFields =
{
new FieldSchema(FirstNameField, typeof(string), 100),
new FieldSchema(LastNameField, typeof(string), 100),
new FieldSchema(PhoneNumberField, typeof(string), 20)
};
// Specify the custom fields as a unique index.
string[] IndexFields = { FirstNameField, LastNameField, PhoneNumberField };
IndexSchema[] Indexes =
{
new IndexSchema(IndexFields, true)
};
// Create the metadata for the replica in the metadata store.
_ContactReplicaMetadata = _ContactMetadataStore.InitializeReplicaMetadata(
ContactIdFormatGroup, new SyncId(StoreAbsPath), CustomFields, Indexes);
// Set the provider version
_ContactReplicaMetadata.ProviderVersion = (uint)ContactsProviderVersion.ContactsProvider_v1;
}
}
Vea también
Referencia
Microsoft.Synchronization.MetadataStorage Espacio de nombres