Aller au contenu principal
Version: 20 R6

$clean

Crée un nouvel entity set à partir d'un entity set existant mais sans ses entités supprimées, le cas échéant (par exemple $clean=true)

Description

$clean crée un nouvel entity set contenant les mêmes entités que entitySetID, mais sans les références aux entités supprimées (le cas échéant).

Par défaut, lorsqu'une entité est supprimée, sa ou ses référence(s) dans les entity sets existants deviennent undefined mais ne sont pas supprimée(s). Elles sont également toujours incluses dans la propriété "count" de l'entity set. Appeler $clean sur l'entity set renvoie un nouvel entity set à jour, sans références d'entités undefined.

$clean peut être suivi de $method=entityset pour créer le nouvel entity set sur le serveur:

/Employee/$entityset/9718A30BF61343C796345F3BE5B01CE7?$clean=true&$method=entityset

Exemple

  1. Nous créons un entity set :

GET /rest/Speciality?$filter="ID<=3"&$method=entityset

Trois entités sont reçues et nous obtenons l'entity set DF6903FB5879404A9A818884CFC6F62A

{
"__ENTITYSET": "/rest/Speciality/$entityset/DF6903FB5879404A9A818884CFC6F62A",
"__DATACLASS": "Speciality",
"__entityModel": "Speciality",
"__GlobalStamp": 0,
"__COUNT": 3,
"__FIRST": 0,
"__ENTITIES": [
{
"__KEY": "1",
"__TIMESTAMP": "2024-04-23T10:42:28.097Z",
"__STAMP": 131,
"ID": 1,
"name": "Surgery",
"infos": {
"__deferred": {
"uri": "/rest/Speciality[1]/infos?$expand=infos"
}
}
},
{
"__KEY": "2",
"__TIMESTAMP": "2024-04-23T10:42:28.097Z",
"__STAMP": 131,
"ID": 2,
"name": "Otolaryngology",
"infos": {
"__deferred": {
"uri": "/rest/Speciality[2]/infos?$expand=infos"
}
}
},
{
"__KEY": "3",
"__TIMESTAMP": "2024-04-23T10:42:28.097Z",
"__STAMP": 131,
"ID": 3,
"name": "Dentist",
"infos": {
"__deferred": {
"uri": "/rest/Speciality[3]/infos?$expand=infos"
}
}
},
],
"__SENT": 3
}
  1. Nous supprimons l'entité de KEY=2 (voir comment supprimer une entité), puis cette requête est envoyée :

GET /rest/Speciality/$entityset/DF6903FB5879404A9A818884CFC6F62A

L'entity set est renvoyé et contient toujours 3 entités. Il y a une entité undefined pour l'entité supprimée (avec stamp = 0) :

{
"__DATACLASS": "Speciality",
"__entityModel": "Speciality",
"__GlobalStamp": 0,
"__COUNT": 3,
"__FIRST": 0,
"__ENTITIES": [
{
"__KEY": "1",
"__TIMESTAMP": "2024-04-23T10:42:28.097Z",
"__STAMP": 131,
"ID": 1,
"name": "Surgery",
"infos": {
"__deferred": {
"uri": "/rest/Speciality[1]/infos?$expand=infos"
}
}
},
{
"__STAMP": 0
},
{
"__KEY": "3",
"__TIMESTAMP": "2024-04-23T10:42:28.097Z",
"__STAMP": 131,
"ID": 3,
"name": "Dentist",
"infos": {
"__deferred": {
"uri": "/rest/Speciality[3]/infos?$expand=infos"
}
}
},
],
"__SENT": 3
}
  1. Si cette requête est exécutée :

GET /rest/Speciality/$entityset/DF6903FB5879404A9A818884CFC6F62A?$clean=true&$method=entityset

Nous nettoyons l'entity set DF6903FB5879404A9A818884CFC6F62A et recevons un nouvel entity set (entity set D7BFBC49375B4FE5A94CDD17AA535F73) qui ne contient pas l'entité supprimée :

{
"__ENTITYSET": "/rest/Speciality/$entityset/D7BFBC49375B4FE5A94CDD17AA535F73",
"__DATACLASS": "Speciality",
"__entityModel": "Speciality",
"__GlobalStamp": 0,
"__COUNT": 2,
"__FIRST": 0,
"__ENTITIES": [
{
"__KEY": "1",
"__TIMESTAMP": "2024-04-23T10:42:28.097Z",
"__STAMP": 131,
"ID": 1,
"name": "Surgery",
"infos": {
"__deferred": {
"uri": "/rest/Speciality[1]/infos?$expand=infos"
}
}
},
{
"__KEY": "3",
"__TIMESTAMP": "2024-04-23T10:42:28.097Z",
"__STAMP": 131,
"ID": 3,
"name": "Dentist",
"infos": {
"__deferred": {
"uri": "/rest/Speciality[3]/infos?$expand=infos"
}
}
}
],
"__SENT": 2
}