Aracılığıyla paylaş


Web API'sini kullanarak tablo satırlarını güncelleştirme ve silme

Verileri değiştirme işlemleri Web API'sinin temel bir parçasıdır. Basit güncelleştirme ve silme işlemlerine ek olarak, tek tablo sütunlarında (varlık öznitelikleri) işlemler gerçekleştirebilir ve var olup olmadığına bağlı olarak verileri güncelleştirecek veya ekleyecek upsert istekleri oluşturabilirsiniz.

Temel güncelleştirme

Güncelleştirme işlemleri HTTP PATCH fiilini kullanır. Kaydı temsil eden URI'ye güncelleştirmek istediğiniz özellikleri içeren bir JSON nesnesi geçirin. Güncelleştirme başarılı olursa durumu 204 No Content olan bir yanıt döndürülür.

If-Match: * başlığı yanlışlıkla bir upsert işlemi gerçekleştirerek yeni bir kayıt oluşturmanızı engeller. Daha fazla bilgi: Upsert'te oluşturmayı engelleme.

Önemli

Bir varlığı güncelleştirirken, yalnızca istek gövdesine değiştirdiğiniz özellikleri ekleyin. Daha önce aldığınız bir varlığın özelliklerini güncelleştirmeniz ve isteğinize bu JSON'un dahil olması, değer aynı olsa bile her özelliği güncelleştirir. Bu, değerlerin değişmesini bekleyen iş mantığını tetikleyebilen sistem olaylarına neden olabilir. Bu, özelliklerin aslında değişmediklerinde denetim verilerinde güncelleştirilmiş gibi görünmesine neden olabilir.

özelliğini güncelleştirdiğinizde statecode , her zaman istenen statuscodedeğerini ayarlamak önemlidir. statecode ve statuscode bağımlı değerlere sahiptir. Belirli statuscode bir değer için birden çok geçerli statecode değer olabilir, ancak her statecode sütunun yapılandırılmış tek bir DefaultStatus değeri vardır. belirtmeden statecodegüncelleştirdiğinizdestatuscode, varsayılan durum değeri sistem tarafından ayarlanır. Ayrıca, tablo ve statuscode sütunda denetim etkinleştirildiğinde, güncelleştirme işleminde belirtilmediği sürece sütun için statuscode değiştirilen değer denetim verilerinde yakalanmaz.

Uyarı

Özniteliklerin tanımı bir RequiredLevel özellik içerir. Bu olarak ayarlandığında SystemRequired, bu öznitelikleri null değere ayarlayamazsınız. Daha fazla bilgi: Öznitelik gereksinim düzeyi

Bu örnek, mevcut bir hesap kaydını 00000000-0000-0000-0000-000000000001 değeriyle accountid güncelleştirir.

İstek:

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  
}  

Yanıt:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Uyarı

Güncelleme sırasında varlıkları ilişkilendirme ve ilişkilendirmeme hakkında bilgi için Tek değerli gezinme özelliklerini kullanma bölümüne bakın.

Döndürülen verilerle güncelleştirme

Güncelleştirdiğiniz bir varlıktan veri almak için, oluşturulan kayıttan alınan verilerin 200 (Tamam) durumuyla döndürülmesi için isteğinizi PATCH oluşturabilirsiniz. Bu sonucu almak için istek üst bilgisini kullanmanız Prefer: return=representation gerekir.

Hangi özelliklerin $select döndürüleceklerini denetlemek için sorgu seçeneğini varlık kümesinin URL'sine ekleyin. $expand Kullanılırsa sorgu seçeneği yoksayılır.

Bu örnek bir hesap varlığını güncelleştirir ve yanıtta istenen verileri döndürür.

İstek:

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"}  

Yanıt:

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"  
}  
  

Tek bir istekte birden çok kaydı güncelleştirme

Tek bir istekte aynı türde birden çok kaydı güncelleştirmenin en hızlı yolu UpdateMultiple eylemini kullanmaktır. Bu yazı yazılırken UpdateMultiple eylemi. Tüm standart tablolar bu eylemi desteklemez, ancak tüm elastik tablolar destekler.

Daha fazla bilgi:

Tek bir özellik değerini güncelleştirme

Yalnızca tek bir özellik değerini güncelleştirmek istediğinizde, varlığın Uri'sine özellik adı eklenmiş bir PUT istek kullanın.

Aşağıdaki örnek, var olan name bir satırın özelliğini 000000000-0000-0000-0000-000000000001 değeriyle account güncelleştiriraccountid.

İstek:

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"}  

Yanıt:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Tek bir özellik değerini silme

Tek bir özelliğin değerini silmek için, varlığın Uri'sine özellik adı eklenmiş bir DELETE istek kullanın.

Aşağıdaki örnek, 000000000-0000-0000-0000-0000-000000000001 olan bir hesap varlığının description özelliğinin değerini sileraccountid.

İstek:

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  

Yanıt:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
  

Uyarı

Bu, iki varlığın ilişkisinin çözülmesi için tek değerli bir gezinti özelliğiyle kullanılamaz. Alternatif bir yaklaşım için bkz Tek değerli bir gezinti özelliğiyle bağlantıyı kesmek.

Tablo satırı ekleme

Upsert işlemi güncelleştirmeye benzer. PATCH isteği kullanır ve belirli bir kayda başvurmak için bir URI kullanır. Aradaki fark, kayıt yoksa oluşturulmuş olmasıdır. Zaten varsa, güncellenir.

Upsert, verileri dış sistemler arasında eşitlerken değerlidir. Dış sistem Dataverse tablosunun birincil anahtarına başvuru içermeyebilir, bu nedenle dış sistemdeki değerleri kullanarak Dataverse tablosu için alternatif anahtarlar yapılandırabilirsiniz ve bu sayede her iki sistemdeki kaydı benzersiz olarak tanımlayabilirsiniz. Daha fazla bilgi: Satırlara referans vermek için alternatif anahtarlar tanımlama

$metadata hizmet belgesindeki varlık türünün ek açıklamalarında bir tablo için tanımlanan diğer anahtarları görebilirsiniz. Daha fazla bilgi: Alternatif Anahtarlar.

Aşağıdaki örnekte, iki sütuna başvuran alternatif anahtara sahip adlı sample_thing bir tablo vardır: sample_key1 ve sample_key2her ikisi de tamsayı değerlerini depolamak için tanımlanmıştır.

İstek:

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"
}

Hem oluşturma hem de güncelleştirme işlemleri için aynı yanıtı alırsınız. Lütfen, yanıt üst bilgisinin OData-EntityId, kayıt için GUID birincil anahtar tanımlayıcısı yerine anahtar değerlerini nasıl kullandığına dikkat edin.

Yanıt:

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)

Yanıt aynı olduğundan, işlemin bir Create veya Update işlemini temsil edip etmediğini bilemezsiniz.

Bilmeniz gerekiyorsa istek üst bilgisini kullanabilirsiniz Prefer: return=representation . Bu üst bilgiyle, bir kayıt oluşturulduğunda bir 201 Created yanıt ve kayıt güncelleştirildiğinde bir 200 OK yanıt alırsınız. Bu seçenek, performansı etkileyen bir Retrieve işlem ekler. Prefer: return=representation istek üst bilgisini kullanıyorsanız, $select öğenizin en az miktarda veri içerdiğinden emin olun, tercihen yalnızca birincil anahtar sütununu. Daha fazla bilgi: Döndürülen verilerle güncelleştirme ve Döndürülen verilerle oluşturma.

Alternatif anahtarları kullanırken, alternatif anahtar değerlerini isteğin gövdesine eklememelisiniz.

  • Bir upsert Update değerini temsil ettiğinde, bu alternatif anahtar değerleri göz ardı edilir. Kaydı tanımlamak için bunları kullanırken alternatif anahtar değerlerini güncelleştiremezsiniz.
  • Bir upsert Create değerini temsil ettiğinde, gövdede mevcut değillerse URL'deki anahtar değerleri kayıt için ayarlanır. Bu nedenle, bunları isteğin gövdesine dahil etmeniz gerekmez.

Daha fazla bilgi: Kayıt oluşturmak veya güncelleştirmek için Upsert kullanma

Uyarı

Normalde yeni bir kayıt oluştururken sistemin birincil anahtar için bir GUID değeri atamasına izin verirsiniz. Bu en iyi yöntemdir çünkü sistem dizin için iyileştirilmiş anahtarlar oluşturur ve bu da performansı artırır. Ancak, anahtar GUID değerinin bir dış sistem tarafından oluşturulması gibi belirli bir birincil anahtar değerine sahip bir kayıt oluşturmanız gerekiyorsa, upsert işlem bunu yapmak için bir yol sağlar.

Upsert ile oluşturma veya güncelleştirmeyi engelleyin

Bazen bir upsertgerçekleştirmek istediğiniz ancak olası işlemlerden birini önlemek istediğiniz durumlar olabilir: oluşturma veya güncelleştirme. If-Match veya If-None-Match üst bilgilerini kullanarak bunu yapabilirsiniz. Daha fazla bilgi için bkz. Upsert işlemlerini sınırlama.

Temel silme

Silme işlemi basittir. DELETE fiilini, silmek istediğiniz nesnenin URI'siyle kullanın. Bu örnek ileti, birincil anahtar accountid değeri 000000000-0000-0000-0000-000000000001 olan bir hesap varlığını siler.

İstek:

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  

Yanıt:

Varlık varsa silme işleminin başarılı olduğunu belirtmek için durum 204 olan normal bir yanıt alırsınız. Varlık bulunamazsa, durum 404 olan bir yanıt alırsınız.

HTTP/1.1 204 No Content  
OData-Version: 4.0  

Yinelenen kayıtları denetleme

Güncelleştirme işlemi sırasında yinelenen kayıtları denetleme hakkında daha fazla bilgi için bkz. Web API'sini kullanarak Güncelleştirme işlemi sırasında yinelenenleri algılama.

Tek bir istekte birden çok kaydı silme

Tek bir istekte aynı türde birden çok kaydı silmenin en hızlı yolu eylemi kullanmaktır DeleteMultiple . Bu yazının yazıldığı sırada DeleteMultiple eylemi bir önizleme özelliğidir. Standart tablolar bu eylemi desteklemez, ancak tüm elastik tablolar destekler.

Uyarı

Standart tablolar için, bir sorguyla eşleşen kayıtların zaman uyumsuz silinmesini sağlayan BulkDelete eylemini kullanmanızı öneririz. Daha fazla bilgi: Verileri toplu silme

Daha fazla bilgi:

Depolama bölümlerindeki belgeleri güncelleştirme ve silme

Bölümlerde depolanan elastik tablo verilerini güncelleştiriyor veya siliyorsanız, bu verilere erişirken bölüm anahtarını belirttiğinizden emin olun.

Daha fazla bilgi: PartitionId değeri seçme

Ayrıca bakınız

Web API'si Temel İşlem Örneği (C#)
Web API Temel İşlem Örneği (İstemci Tarafı JavaScript)
Web API'sini kullanarak işlemler gerçekleştirme
Http istekleri oluşturma ve hataları işleme
Web API'sini kullanarak Verileri Sorgulama
Web API'sini kullanarak tablo satırı oluşturma
Web API'sini kullanarak tablo satırı alma
Web API'sini kullanarak tablo satırlarını ilişkilendirme ve ilişkilendirmeyi kesme
Web API işlevlerini kullanma
Web API işlemlerini kullanma
Web API'sini kullanarak toplu işlemleri yürütme
Web API'sini kullanarak başka bir kullanıcının kimliğine bürünme
Web API'sini kullanarak koşullu işlemler gerçekleştirme