Compartir a través de


SerializeDataInstance (Método) (2003 System)

Actualización: noviembre 2007

Guarda el estado de CachedDataItem en la caché de datos.

Espacio de nombres:  Microsoft.VisualStudio.Tools.Applications.Runtime
Ensamblado:  Microsoft.VisualStudio.Tools.Applications.Runtime (en Microsoft.VisualStudio.Tools.Applications.Runtime.dll)

Sintaxis

'Declaración
Public Sub SerializeDataInstance ( _
    value As Object _
)
'Uso
Dim instance As CachedDataItem
Dim value As Object

instance.SerializeDataInstance(value)
public void SerializeDataInstance(
    Object value
)

Parámetros

  • value
    Tipo: System. . :: .Object

    Copia del objeto de datos almacenado en memoria caché que contiene los cambios que desea guardar en la caché de datos.

Comentarios

Para modificar un objeto de datos almacenado en memoria caché, se debe deserializar la representación XML de los datos almacenados en caché en una nueva instancia del objeto de datos almacenado en caché, hacer los cambios en esta copia y, a continuación, volver a serializar el objeto modificado en la caché de datos. Utilice el método SerializeDataInstance para serializar cambios en la copia de un objeto de datos almacenado en memoria caché.

Este método utiliza el formato DiffGram para serializar objetos de DataSet, de DataTable y de conjuntos de datos con tipo en la caché de datos. De este modo, se garantiza que los cambios en la caché de datos de un documento sin conexión se envían correctamente al servidor. Para obtener más información, vea DiffGrams (ADO.NET).

Ejemplos

En el siguiente ejemplo de código, se crea un nuevo ServerDocument para un documento especificado, se modifica una copia del objeto de datos almacenado en caché y, a continuación, se utiliza el método SerializeDataInstance para guardar el nuevo estado del objeto de datos almacenado en caché. En el ejemplo, se necesita una referencia al ensamblado Microsoft.VisualStudio.Tools.Applications.Runtime y una instrucción Imports o using para el espacio de nombres Microsoft.VisualStudio.Tools.Applications.Runtime al principio del archivo de código.

Private customerOrdersSet As DataSet

Private Sub LoadCachedData(ByVal fileName As String)
    If ServerDocument.IsCacheEnabled(fileName) Then
        Dim serverDocument1 As ServerDocument = Nothing
        Try
            serverDocument1 = New ServerDocument(fileName)
            customerOrdersSet = New DataSet()

            ' Identify the namespace and the class that  
            ' contains the cached data object.
            Dim hostItem1 As CachedDataHostItem = _
                serverDocument1.CachedData.HostItems( _
                "DataCachingSource.ThisWorkbook")

            ' Identify the name of the cached data object.
            Dim dataItem1 As CachedDataItem = _
                hostItem1.CachedData("customerOrdersCached")

            ' Read the cached data into the local DataSet.
            If Nothing <> dataItem1.Xml AndAlso _
                Nothing <> dataItem1.Schema Then

                Dim xmlReader As New System.IO.StringReader( _
                    dataItem1.Xml)
                Dim schemaReader As New System.IO.StringReader( _
                    dataItem1.Schema)
                customerOrdersSet.ReadXmlSchema(schemaReader)
                customerOrdersSet.ReadXml(xmlReader)

                ' Modify the data.
                Dim row As DataRow
                For Each row In customerOrdersSet.Tables(0).Rows
                    Dim orders As Integer = Fix(row("OrderQuantity"))
                    row("OrderQuantity") = orders * 2
                Next row

                ' Write the modified data back to the
                ' cached data in the worksheet.
                dataItem1.SerializeDataInstance(customerOrdersSet)
                serverDocument1.Save()
            End If
        Finally
            If Not serverDocument1 Is Nothing Then
                serverDocument1.Close()
            End If
        End Try
    Else
        MsgBox("The specified document does not have " + _
            "a data cache.")
    End If
End Sub
private DataSet customerOrdersSet;

private void LoadCachedData(string fileName)
{
    if (ServerDocument.IsCacheEnabled(fileName))
    {
        ServerDocument serverDocument1 = null;
        try
        {
            serverDocument1 = new ServerDocument(fileName);
            customerOrdersSet = new DataSet();

            // Identify the namespace and the class that contains 
            // the cached data object.
            CachedDataHostItem hostItem1 =
                serverDocument1.CachedData.HostItems[
                "DataCachingSource.ThisWorkbook"];

            // Identify the name of the cached data object.
            CachedDataItem dataItem1 = hostItem1.CachedData[
                "customerOrdersCached"];

            // Read the cached data into the local DataSet.
            if (null != dataItem1.Xml && null != dataItem1.Schema)
            {
                System.IO.StringReader xmlReader =
                    new System.IO.StringReader(dataItem1.Xml);
                System.IO.StringReader schemaReader =
                    new System.IO.StringReader(dataItem1.Schema);
                customerOrdersSet.ReadXmlSchema(schemaReader);
                customerOrdersSet.ReadXml(xmlReader);

                // Modify the data.
                foreach (DataRow row in
                    customerOrdersSet.Tables[0].Rows)
                {
                    int orders = (int)row["OrderQuantity"];
                    row["OrderQuantity"] = orders * 2;
                }

                // Write the modified data back to the
                // cached data in the worksheet.
                dataItem1.SerializeDataInstance(customerOrdersSet);
                serverDocument1.Save();
            }
        }
        finally
        {
            if (serverDocument1 != null)
                serverDocument1.Close();
        }
    }
    else
    {
        MessageBox.Show("The specified document does not have " +
            "a data cache.");
    }
}

Permisos

Vea también

Referencia

CachedDataItem (Clase)

CachedDataItem (Miembros)

Microsoft.VisualStudio.Tools.Applications.Runtime (Espacio de nombres)