Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los datos devueltos en la respuesta de los servicios de datos de ADO.NET pueden ser a veces muy extensos. Para la conservación del ancho de banda o de los ciclos de la CPU, puede que un servicio de datos no devuelva la respuesta completa a una solicitud. Los servicios de datos de ADO.NET pueden aplazar el envío de casi todas las secciones de una respuesta; es probable que estos servicios aplacen la serialización de las propiedades de navegación o de valores de propiedades extensos como BLOBS o imágenes.
El siguiente ejemplo muestra cómo indican los servicios de datos de ADO.NET el contenido aplazado que usa la serialización de JSON. Cuando hay dos tipos de entidades, por ejemplo Customer y Order en las que un solo cliente se asocia a muchos pedidos, la serialización predeterminada de una entidad Customer es la siguiente:
{ "d":
{
__metadata: {
uri: "Customers(\'NTSOS\')", type: "NorthwindModel.Customers"
}, CustomerID: "NTSOS", CompanyName: "Contoso Ltd",
Address: "1010 Street", Orders: {
__deferred: {
uri: "Customers(\'NTSOS\')/Orders"
}
}
}
}
La propiedad __deferred de este ejemplo indica que no se devuelven los valores de los elementos Order. Para recuperarlos, debe enviar una solicitud GET directamente a Customers(\'NTSOS\')/Orders.
Reglas de contenido aplazado de JSON
Las siguientes reglas controlan el uso del contenido aplazado de los servicios de datos de ADO.NET cuando se use la serialización de JSON:
El contenido de la propiedad que anota el comando
__deferredno se devuelve en la serialización. El solicitante puede recuperar el contenido enviando una solicitudGETen el elemento primario. Además, puede incluir la opción de consulta$expandpara evitar el aplazamiento. Para obtener más información, vea Opciones de consulta del sistema de servicios de datos de ADO.NET.La propiedad
__deferredno debe ser una propiedad del objeto externo a menos que este objeto no contenga más propiedades.La propiedad
__deferredno implica que se aplace el contenido. Indica que el posible contenido aún no se ha evaluado ni serializado.De forma predeterminada, los servicios de datos de ADO.NET aplazan la serialización de los siguientes tipos de datos:
Valores de propiedad de navegación.
Valores de vínculo.
Valores de propiedad cuyo tipo sea
Edm.Binary.
Valores de propiedad cuyo tipo
EdmType.Binaryno se pueda aplazar.
Ejemplos
El ejemplo siguiente muestra la serialización de JSON de un conjunto de entidades Customers vacío:
{ "d": [ ] }
El ejemplo siguiente muestra la serialización de JSON de un conjunto de entidades Customers que contiene dos instancias del tipo de entidad denominado Customer. Los pedidos relacionados con Customers no se expanden en línea, que es el comportamiento predeterminado.
{ "d": [
{
__metadata: {
uri: "Customers(\'NTSOS\')", type: "NorthwindModel.Customer"
},
CustomerID: "NTSOS",
CompanyName: "Contoso Ltd",
Address: "1010 Street",
Orders: {
__deferred: {
uri: "Customers(NTSOS)/Orders"
}
}
},
{
__metadata: {
uri: "Customers(FABRK)", type: "NorthwindModel.Customer"
},
CustomerID: "FABRK",
CompanyName: "Fabrikam Inc",
"2020 Street",
Orders: {
__deferred: {
uri: "Customers(\'FABRK\')/Orders"
}
},
}
]
}
El siguiente ejemplo muestra la serialización de JSON de un tipo de entidad Customer que contiene todos los elementos Orders serializados en línea.
{ "d":
{
__metadata: {
uri: "Customers(NTSOS)", type: "NorthwindModel.Customer"
},
CustomerID: "NTSOS",
CompanyName: "Contoso Ltd",
Address: "1010 Street",
Orders: [
{
__metadata: {
uri: "Customers(NTSOS)/Orders",
type: "NorthwindModel.Order"
},
ShippedDate: "\/Date(1202321)\/",
ShipAddress: "1010 Street",
Customers: {
__deferred: {
Uri: "Customers(\'NTSOS\')/Orders/Customers"
}
}
]
}
}
El siguiente ejemplo muestra la serialización de JSON de una sola instancia de tipo de entidad Customer con una cadena vacía como su nombre de compañía y cuya propiedad de dirección tiene el valor NULL:
{ "d":
{
__metadata: {
uri: "Customers(NTSOS)", type: "NorthwindModel.Customer"
},
CustomerID: "NTSOS",
CompanyName: "Contoso Ltd",
Address: null,
Orders: {
__deferred: {
uri: "Customers(NTSOS)/Orders"
}
}
}
}
El siguiente ejemplo muestra la serialización de JSON de la propiedad CustomerID en un tipo de entidad Customer donde el tipo de la propiedad es una cadena y el valor es NTSOS:
"NTSOS"
Este ejemplo es el mismo que el anterior, salvo que la serialización solicitada es para el valor sin metadatos adicionales; no hay marcado JSON adyacente.
NTSOS
Vea también
Conceptos
Reglas de serialización de JSON (marco de trabajo de los servicios de datos de ADO.NET)
Formato JSON (marco de trabajo de los servicios de datos de ADO.NET)
Aplicaciones cliente de los servicios de datos de ADO.NET