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. . :: .ObjectCopia 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
- Plena confianza para el llamador inmediato. Un código de confianza parcial no puede utilizar este miembro. Para obtener más información, vea Utilizar bibliotecas de código que no es de plena confianza.
Vea también
Referencia
Microsoft.VisualStudio.Tools.Applications.Runtime (Espacio de nombres)