Σημείωση
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να συνδεθείτε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Λειτουργίες για την τροποποίηση δεδομένων αποτελούν βασικό τμήμα του Web API. Εκτός από απλές λειτουργίες ενημέρωσης και διαγραφής, μπορείτε να εκτελέσετε λειτουργίες σε μεμονωμένες στήλες πίνακα (χαρακτηριστικά οντότητας) και να συντάξετε αιτήσεις upsert που θα ενημερώνουν ή εισάγουν δεδομένα ανάλογα με το αν υπάρχουν.
Βασική ενημέρωση
Οι λειτουργίες ενημέρωσης χρησιμοποιούν το ρήμα HTTP PATCH . Διαβιβάστε ένα αντικείμενο JSON που περιέχει τις ιδιότητες που θέλετε να ενημερώσετε στο URI που αντιπροσωπεύει την εγγραφή. Επιστρέφεται μια απόκριση με κατάσταση 204 No Content , εάν η ενημέρωση είναι επιτυχής.
Η If-Match: * κεφαλίδα εξασφαλίζει ότι δεν θα δημιουργήσετε μια νέα εγγραφή εκτελώντας κατά λάθος μια λειτουργία upsert. Περισσότερες πληροφορίες: Αποτροπή δημιουργίας κατά την λειτουργία upsert.
Σημαντικό
Κατά την ενημέρωση μιας οντότητας, συμπεριλάβετε μόνο τις ιδιότητες που αλλάζετε στο σώμα αίτησης. Η απλή ενημέρωση των ιδιοτήτων μιας οντότητας που ανακτήσατε προηγουμένως και η συμπερίληψη αυτής της JSON στην αίτησή σας, θα ενημερώσει κάθε ιδιότητα, παρόλο που η τιμή είναι ίδια. Αυτό μπορεί να προκαλέσει συμβάντα συστήματος που μπορούν να ενεργοποιήσουν επιχειρηματική λογική που αναμένει ότι οι τιμές έχουν αλλάξει. Αυτό μπορεί να προκαλέσει την εμφάνιση των ιδιοτήτων να έχουν ενημερωθεί στον έλεγχο δεδομένων, όταν στην πραγματικότητα δεν έχουν αλλάξει.
Όταν ενημερώνετε την statecode ιδιότητα, είναι σημαντικό να ορίζετε πάντα την επιθυμητή statuscode.
statecode και statuscode έχουν εξαρτώμενες τιμές. Μπορεί να υπάρχουν πολλές έγκυρες statuscode τιμές για μια δεδομένη statecode τιμή, αλλά κάθε statecode στήλη έχει μια μοναδική τιμή DefaultStatus ρυθμισμένη. Όταν κάνετε ενημέρωση statecode χωρίς να καθορίζετε , statuscodeη προεπιλεγμένη τιμή κατάστασης θα οριστεί από το σύστημα. Επίσης, όταν ο έλεγχος είναι ενεργοποιημένος στον πίνακα και τη statuscode στήλη, η αλλαγμένη τιμή για τη statuscode στήλη δεν θα καταγράφεται στα δεδομένα ελέγχου, εκτός εάν καθορίζεται στη λειτουργία ενημέρωσης.
Σημείωμα
Ο ορισμός για τα χαρακτηριστικά περιλαμβάνει μια RequiredLevel ιδιότητα. Όταν οριστεί σε SystemRequired, δεν μπορείτε να ορίσετε αυτά τα χαρακτηριστικά σε μια τιμή null. Περισσότερες πληροφορίες: Επίπεδο απαίτησης χαρακτηριστικού
Αυτό το παράδειγμα ενημερώνει μια υπάρχουσα εγγραφή λογαριασμού με την accountid τιμή 00000000-0000-0000-0000-00000000000001.
Αίτηση:
PATCH [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-Match: *
{
"name": "Updated Sample Account ",
"creditonhold": true,
"address1_latitude": 47.639583,
"description": "This is the updated description of the sample account",
"revenue": 6000000,
"accountcategorycode": 2
}
Απάντηση:
HTTP/1.1 204 No Content
OData-Version: 4.0
Σημείωμα
Ανατρέξτε στο θέμα Χρήση ιδιοτήτων περιήγησης μίας τιμής για πληροφορίες σχετικά με τη συσχέτιση και κατάργηση συσχέτισης οντοτήτων κατά την ενημέρωση.
Ενημέρωση με τα δεδομένα που επιστρέφονται
Για να ανακτήσετε δεδομένα από μια οντότητα που ενημερώνετε, μπορείτε να συντάξετε την αίτησή σας PATCH , έτσι ώστε τα δεδομένα από την εγγραφή που δημιουργήθηκε να επιστρέφονται με κατάσταση 200 (OK). Για να λάβετε αυτό το αποτέλεσμα, πρέπει να χρησιμοποιήσετε την Prefer: return=representation κεφαλίδα αίτησης.
Για να ελέγξετε ποιες ιδιότητες επιστρέφονται, προσαρτήστε την $select επιλογή ερωτήματος στη διεύθυνση URL για το σύνολο οντοτήτων. Η $expand επιλογή ερωτήματος παραβλέπεται εάν χρησιμοποιηθεί.
Αυτό το παράδειγμα ενημερώνει μια οντότητα λογαριασμού και επιστρέφει τα δεδομένα που ζητήθηκαν στην απόκριση.
Αίτηση:
PATCH [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)?$select=name,creditonhold,address1_latitude,description,revenue,accountcategorycode,createdon HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Content-Type: application/json; charset=utf-8
Prefer: return=representation
If-Match: *
{"name":"Updated Sample Account"}
Απάντηση:
HTTP/1.1 200 OK
Content-Type: application/json; odata.metadata=minimal
Preference-Applied: return=representation
OData-Version: 4.0
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts/$entity",
"@odata.etag": "W/\"536537\"",
"accountid": "00000000-0000-0000-0000-000000000001",
"accountcategorycode": 1,
"description": "This is the description of the sample account",
"address1_latitude": 47.63958,
"creditonhold": false,
"name": "Updated Sample Account",
"createdon": "2016-09-28T23:14:00Z",
"revenue": 5000000.0000,
"_transactioncurrencyid_value": "048dddaa-6f7f-e611-80d3-00155db5e0b6"
}
Ενημέρωση πολλών εγγραφών σε μία μόνο αίτηση
Ο ταχύτερος τρόπος για να ενημερώσετε πολλές εγγραφές του ίδιου τύπου σε μία αίτηση είναι να χρησιμοποιήσετε την ενέργεια UpdateMultiple. Τη στιγμή που συντάσσεται αυτό το κείμενο, η ενέργεια UpdateMultiple. Δεν υποστηρίζουν όλοι οι τυπικοί πίνακες αυτή την ενέργεια, αλλά όλοι οι ελαστικοί πίνακες το υποστηρίζουν.
Περισσότερες πληροφορίες:
- Μηνύματα μαζικής λειτουργίας
- Δείγμα: Web API Χρήση μαζικών λειτουργιών
- Χρήση του UpdateMultiple με ελαστικούς πίνακες
Ενημέρωση μεμονωμένης τιμής ιδιότητας
Όταν θέλετε να ενημερώσετε μόνο μία τιμή ιδιότητας, χρησιμοποιήστε μια PUT αίτηση με το όνομα ιδιότητας προσαρτημένο στο Uri της οντότητας.
Το παρακάτω παράδειγμα ενημερώνει την name ιδιότητα μιας υπάρχουσας account γραμμής με την accountid τιμή 00000000-0000-0000-0000-000000000000001.
Αίτηση:
PUT [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/name HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
{"value": "Updated Sample Account Name"}
Απάντηση:
HTTP/1.1 204 No Content
OData-Version: 4.0
Διαγραφή μεμονωμένης τιμής ιδιότητας
Για να διαγράψετε την τιμή μιας μεμονωμένης ιδιότητας, χρησιμοποιήστε μια DELETE αίτηση με το όνομα ιδιότητας προσαρτημένο στο Uri της οντότητας.
Το παρακάτω παράδειγμα διαγράφει την τιμή της description ιδιότητας μιας οντότητας λογαριασμού με τιμή accountid 0000000-0000-0000-0000-0000-000000000000.
Αίτηση:
DELETE [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/description HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Απάντηση:
HTTP/1.1 204 No Content
OData-Version: 4.0
Σημείωμα
Αυτό δεν μπορεί να χρησιμοποιηθεί με μια ιδιότητα περιήγησης μίας τιμής για την κατάργηση συσχέτισης δύο οντοτήτων. Για μια εναλλακτική προσέγγιση, ανατρέξτε στο θέμα Κατάργηση συσχέτισης με μια ιδιότητα περιήγησης μίας τιμής .
Εισαγωγή ή ενημέρωση γραμμής πίνακα
Μια λειτουργία upsert είναι παρόμοια με μια ενημέρωση. Χρησιμοποιεί μια PATCH αίτηση και χρησιμοποιεί ένα URI για αναφορά σε μια συγκεκριμένη εγγραφή. Η διαφορά είναι ότι εάν η εγγραφή δεν υπάρχει, δημιουργείται. Εάν υπάρχει ήδη, ενημερώνεται.
Η upsert είναι πολύτιμη κατά τον συγχρονισμό δεδομένων μεταξύ εξωτερικών συστημάτων. Το εξωτερικό σύστημα μπορεί να μην περιέχει μια αναφορά στο πρωτεύον κλειδί του πίνακα Dataverse, επομένως μπορείτε να ρυθμίσετε εναλλακτικά κλειδιά για τον πίνακα Dataverse χρησιμοποιώντας τιμές από το εξωτερικό σύστημα που αναγνωρίζουν μοναδικά την εγγραφή και στα δύο συστήματα. Περισσότερες πληροφορίες: Ορισμός εναλλακτικών κλειδιών για αναφορά γραμμών
Μπορείτε να δείτε οποιαδήποτε εναλλακτικά κλειδιά που έχουν οριστεί για έναν πίνακα στα σχόλια για τον τύπο οντότητας στο έγγραφο $metadata υπηρεσίας. Περισσότερες πληροφορίες: Εναλλακτικά κλειδιά.
Στο παρακάτω παράδειγμα, υπάρχει ένας πίνακας με το όνομα sample_thing που έχει ένα εναλλακτικό κλειδί που αναφέρεται σε δύο στήλες: sample_key1 και sample_key2, οι οποίες έχουν οριστεί για την αποθήκευση ακέραιων τιμών.
Αίτηση:
PATCH [Organization URI]/api/data/v9.2/sample_things(sample_key1=1,sample_key2=1) HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
If-None-Match: null
Content-Type: application/json
{
"sample_name": "1:1"
}
Για αμφότερες τις λειτουργίες δημιουργίας ή ενημέρωσης, λαμβάνετε την ίδια απόκριση. Παρατηρήστε πώς η OData-EntityId κεφαλίδα απόκρισης χρησιμοποιεί τις τιμές κλειδιού αντί για το αναγνωριστικό πρωτεύοντος κλειδιού GUID για την εγγραφή.
Απάντηση:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/sample_things(sample_key1=1,sample_key2=1)
Επειδή η απόκριση είναι ίδια, δεν μπορείτε να γνωρίζετε εάν η λειτουργία αναπαριστούν μια Create λειτουργία ή Update .
Εάν θέλετε να γνωρίζετε, μπορείτε να χρησιμοποιήσετε την Prefer: return=representation κεφαλίδα αίτησης. Με αυτήν την κεφαλίδα, λαμβάνετε μια 201 Created απάντηση όταν δημιουργείται μια εγγραφή και μια 200 OK απόκριση όταν ενημερώνεται η εγγραφή. Αυτή η επιλογή προσθέτει μια Retrieve λειτουργία, η οποία έχει επιπτώσεις στις επιδόσεις. Εάν χρησιμοποιείτε την Prefer: return=representation κεφαλίδα αίτησης, βεβαιωθείτε ότι $select περιλαμβάνει τον ελάχιστο όγκο δεδομένων, κατά προτίμηση μόνο τη στήλη πρωτεύοντος κλειδιού. Περισσότερες πληροφορίες: Ενημέρωση με τα δεδομένα που επιστρέφονται και Δημιουργία με τα δεδομένα που επιστρέφονται.
Όταν χρησιμοποιείτε εναλλακτικά κλειδιά, δεν πρέπει να συμπεριλάβετε τις εναλλακτικές τιμές κλειδιού στο σώμα της αίτησης.
- Όταν μια upsert αντιπροσωπεύει ένα
Update, αυτές οι εναλλακτικές τιμές κλειδιών παραβλέπονται. Δεν μπορείτε να ενημερώσετε τις εναλλακτικές τιμές κλειδιών ενώ τις χρησιμοποιείτε για τον προσδιορισμό της εγγραφής. - Όταν μια upsert αντιπροσωπεύει ένα
Create, οι τιμές κλειδιού στη διεύθυνση URL ορίζονται για την εγγραφή, εάν δεν είναι παρούσες στο σώμα. Επομένως, δεν χρειάζεται να τις συμπεριλάβετε στο σώμα της αίτησης.
Περισσότερες πληροφορίες: Χρήση Upsert για δημιουργία ή ενημέρωση μιας εγγραφής
Σημείωμα
Συνήθως, όταν δημιουργείτε μια νέα εγγραφή, θα επιτρέψετε στο σύστημα να αντιστοιχίσει μια τιμή GUID για το πρωτεύον κλειδί. Αυτή είναι η βέλτιστη πρακτική, επειδή το σύστημα δημιουργεί κλειδιά που έχουν βελτιστοποιηθεί για το ευρετήριο και αυτό βελτιώνει τις επιδόσεις. Ωστόσο, εάν χρειαστεί να δημιουργήσετε μια εγγραφή με μια συγκεκριμένη τιμή πρωτεύοντος κλειδιού, όπως όταν η τιμή GUID κλειδιού δημιουργείται από ένα εξωτερικό σύστημα, η upsert λειτουργία παρέχει έναν τρόπο για να το κάνετε αυτό.
Αποτροπή δημιουργίας ή ενημέρωσης με upsert
Ορισμένες φορές υπάρχουν περιπτώσεις όπου θέλετε να εκτελέσετε μια upsert, αλλά θέλετε να αποτρέψετε μία από τις πιθανές λειτουργίες: δημιουργία ή ενημέρωση. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας τις If-Match κεφαλίδες ή If-None-Match . Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Περιορισμός λειτουργιών upsert.
Βασική διαγραφή
Μια λειτουργία διαγραφής είναι απλή. Χρησιμοποιήστε το DELETE ρήμα με το URI της οντότητας που θέλετε να διαγράψετε. Αυτό το παράδειγμα μηνύματος διαγράφει μια οντότητα λογαριασμού με την τιμή πρωτεύοντος κλειδιού accountid ίση με 0000000-0000-0000-0000000000000001.
Αίτηση:
DELETE [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001) HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Απάντηση:
Εάν η οντότητα υπάρχει, λαμβάνετε μια κανονική απόκριση με κατάσταση 204 για να υποδείξετε ότι η διαγραφή ολοκληρώθηκε με επιτυχία. Εάν η οντότητα δεν βρεθεί, λαμβάνετε μια απάντηση με κατάσταση 404.
HTTP/1.1 204 No Content
OData-Version: 4.0
Έλεγχος για διπλότυπες εγγραφές
Για περισσότερες πληροφορίες σχετικά με τον τρόπο ελέγχου για διπλότυπες εγγραφές κατά τη διάρκεια μιας λειτουργίας ενημέρωσης, ανατρέξτε στο θέμα Εντοπισμός διπλότυπων κατά τη λειτουργία ενημέρωσης χρησιμοποιώντας το Web API.
Διαγραφή πολλών εγγραφών σε μία μόνο αίτηση
Ο ταχύτερος τρόπος για να διαγράψετε πολλές εγγραφές του ίδιου τύπου σε μία αίτηση είναι να χρησιμοποιήσετε την DeleteMultiple ενέργεια. Τη στιγμή της σύνταξης αυτής της ενέργειας, η DeleteMultiple ενέργεια είναι μια δυνατότητα προεπισκόπησης. Οι τυπικοί πίνακες δεν υποστηρίζουν αυτή την ενέργεια, αλλά όλοι οι ελαστικοί πίνακες το υποστηρίζουν.
Σημείωμα
Για τους τυπικούς πίνακες, συνιστούμε τη χρήση της ενέργειας BulkDelete, η οποία επιτρέπει την ασύγχρονη διαγραφή εγγραφών που αντιστοιχούν σε ένα ερώτημα. Περισσότερες πληροφορίες: Μαζική διαγραφή δεδομένων
Περισσότερες πληροφορίες:
- Μηνύματα μαζικής λειτουργίας
- Ελαστικό δείγμα κώδικα πίνακα
- Χρήση της DeleteMultiple με ελαστικούς πίνακες
Ενημέρωση και διαγραφή εγγράφων σε διαμερίσματα χώρου αποθήκευσης
Εάν ενημερώνετε ή διαγράφετε ελαστικά δεδομένα πίνακα που είναι αποθηκευμένα σε διαμερίσματα, φροντίστε να καθορίσετε το κλειδί διαμερίσματος κατά την πρόσβαση σε αυτά τα δεδομένα.
Περισσότερες πληροφορίες: Επιλογή τιμής PartitionId
Δείτε επίσης
Δείγμα βασικών λειτουργιών web API (C#)
Δείγμα βασικών λειτουργιών web API (JavaScript από την πλευρά του προγράμματος-πελάτη)
Εκτέλεση λειτουργιών με χρήση του Web API
Σύνταξη αιτήσεων Http και χειρισμός σφαλμάτων
Υποβολή ερωτημάτων για δεδομένα με χρήση του Web API
Δημιουργία γραμμής πίνακα με χρήση του API Web
Ανάκτηση γραμμής πίνακα με χρήση του API Web
Συσχέτιση και κατάργηση συσχέτισης γραμμών πίνακα με χρήση του API Web
Χρήση συναρτήσεων Web API
Χρήση ενεργειών Web API
Εκτέλεση λειτουργιών δέσμης με χρήση του Web API
Μίμηση άλλου χρήστη χρησιμοποιώντας το Web API
Εκτέλεση λειτουργιών υπό όρους με χρήση του Web API