Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les données retournées dans la réponse d'ADO.NET Data Services peuvent parfois être volumineuses. Afin de préserver de la bande passante ou des cycles de processeur, un service de données peut ne pas retourner la réponse complète à une demande. ADO.NET Data Services peut différer l'envoi de quasiment toute section d'une réponse ; il est probable qu'ADO.NET Data Services diffère la sérialisation des propriétés de navigation ou des grandes valeurs de propriétés telles que les objets BLOB ou les images.
L'exemple suivant illustre la manière dont ADO.NET Data Services indique le contenu différé qui utilise la sérialisation JSON. Lorsqu'il y a deux types d'entités, par exemple Customer et Order, et qu'un même client est associé à de nombreuses commandes, la sérialisation par défaut d'une entité Customer est la suivante :
{ "d":
{
__metadata: {
uri: "Customers(\'NTSOS\')", type: "NorthwindModel.Customers"
}, CustomerID: "NTSOS", CompanyName: "Contoso Ltd",
Address: "1010 Street", Orders: {
__deferred: {
uri: "Customers(\'NTSOS\')/Orders"
}
}
}
}
La propriété __deferred dans cet exemple signifie que les valeurs des éléments Order ne sont pas retournées. Pour extraire les valeurs, vous devez envoyer une demande GET directement à Customers(\'NTSOS\')/Orders.
Règles de contenu différé dans JSON
Les règles suivantes régissent l'utilisation du contenu différé dans ADO.NET Data Services lors de l'utilisation de la sérialisation JSON :
Le contenu de la propriété annotée par la commande
__deferredn'est pas retourné dans la sérialisation. Le demandeur peut extraire le contenu en effectuant une demandeGETconcernant l'élément parent. Il peut également inclure l'option de requête$expandafin d'éviter le différé. Pour plus d'informations, consultez Options de requête système d'ADO.NET Data Services.La propriété
__deferredne doit pas être une propriété de l'objet le plus extérieur, à moins que celui-ci ne contienne aucune autre propriété.La propriété
__deferredn'implique pas qu'un contenu est différé. Elle indique qu'un contenu possible n'a pas encore été évalué ou sérialisé.Par défaut, ADO.NET Data Services diffère la sérialisation des types de données suivants :
Valeurs de propriétés de navigation.
Valeurs de liens.
Valeurs de propriétés du type
Edm.Binary.
Les valeurs de propriétés du type
EdmType.Binaryne peuvent pas être différées.
Exemples
L'exemple suivant illustre la sérialisation JSON d'un jeu d'entités Customers vide :
{ "d": [ ] }
L'exemple suivant illustre la sérialisation JSON d'un jeu d'entités Customers qui contient deux instances du type d'entité nommé Customer. Les commandes liées à Customers ne sont pas étendues inline, ce qui constitue le comportement par défaut.
{ "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"
}
},
}
]
}
L'exemple suivant illustre la sérialisation JSON d'un type d'entité Customer qui contient tous les éléments Orders connexes sérialisés inline.
{ "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"
}
}
]
}
}
L'exemple suivant illustre la sérialisation JSON d'un type d'entité Customer unique qui possède une chaîne vide comme nom de société et dont la propriété d'adresse est nulle :
{ "d":
{
__metadata: {
uri: "Customers(NTSOS)", type: "NorthwindModel.Customer"
},
CustomerID: "NTSOS",
CompanyName: "Contoso Ltd",
Address: null,
Orders: {
__deferred: {
uri: "Customers(NTSOS)/Orders"
}
}
}
}
L'exemple suivant illustre la sérialisation JSON de la propriété CustomerID sur un type d'entité Customer, où le type de la propriété est une chaîne et la valeur est NTSOS.
"NTSOS"
Cet exemple est identique à l'exemple JSON précédent, hormis le fait que la sérialisation demandée concerne la valeur sans métadonnées supplémentaires ; il n'y a pas de balisage JSON englobant.
NTSOS
Voir aussi
Concepts
Règles de sérialisation JSON (ADO.NET Data Services Framework)
Format JSON (ADO.NET Data Services Framework)
Applications clientes d'ADO.NET Data Services