Aracılığıyla paylaş


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

Verileri değiştiren işlemler 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ştiren veya ekleyen 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, yanıt durumunu 204 No Contentdöndürü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 için, Upsert'te oluşturmayı engelleme kısmına bakın.

Ö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 tüm özelliklerini ekleyerek bir varlığı güncelleştirirseniz, değer aynı olsa bile işlem her özelliği güncelleştirir. Bu güncelleştirme, değerlerin değişmesini bekleyen iş mantığını tetikleyen sistem olaylarına neden olabilir. Özelliklerin aslında değişmediğinde denetim verilerinde güncelleştirilmiş gibi görünmesine neden olabilir.

özelliğini güncelleştirdiğinizde statecode , her zaman istenen statuscodedeğerini ayarlayın. statecode ve statuscode değerleri birbirine bağlıdır. Belirli statecode bir değer için birden çok geçerli statuscode değer olabilir. Ancak, her statecode sütunun yapılandırılmış tek bir DefaultStatus değeri vardır. belirtmeden statecodegüncelleştirdiğinizdestatuscode, sistem varsayılan durum değerini ayarlar. Ayrıca, tabloda ve statuscode sütunda denetimi etkinleştirirseniz, güncelleştirme işleminde belirtmediğiniz 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 özellik olarak SystemRequiredayarlandığında, bu öznitelikleri null değere ayarlayamazsınız. Daha fazla bilgi için bkz . Öznitelik gereksinimi 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üncelleştirme sırasında varlıkları ilişkilendirme ve ilişkiyi kaldırma hakkında bilgi için bkz. Tek değerli gezinti özelliklerini kullanma.

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

Güncelleştirmekte olduğunuz bir varlıktan veri almak için, isteğinizi PATCH 200 (Tamam) durumuyla güncelleştirilmiş kayıttan veri döndürecek şekilde oluşturun. Bu sonucu almak için istek üst bilgisini kullanın Prefer: return=representation .

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. Tüm standart tablolar bu eylemi desteklemez, ancak tüm elastik tablolar destekler.

Daha fazla bilgi:

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

Tek bir özellik değerini güncelleştirmek için bir PUT istek kullanın ve özelliğin adını varlığın Uri'sine ekleyin.

Mevcut bir account satırının name özelliğini 00000000-0000-0000-0000-000000000001'ün accountid değeriyle güncelleştirir.

İ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, accountid değeri 00000000-0000-0000-0000-000000000001 olan bir hesap varlığının description özelliğinin değerini siler.

İ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ı

İki varlığı ilişkilendirmemek için bu yaklaşımı tek değerli bir gezinti özelliğiyle kullanamazsınız. Alternatif bir yaklaşım için bkz. Tek değerli bir gezinti özelliği kullanarak ilişkilendirmeyi kaldır.

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 bilgiyi kullanarak, 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, isteğin gövdesine alternatif anahtar değerlerini eklemeyin.

  • 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 uygulama en iyisidir çünkü sistem dizin için iyileştirilmiş anahtarlar oluşturur ve bu seçenek 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 upsert gerçekleştirmek, ancak olası işlemlerden birini engellemek isteyebilirsiniz: oluşturma veya güncelleştirme. If-Match veya If-None-Match üst bilgilerini kullanarak bu işlemleri engelleyebilirsiniz. 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ğerine eşit 00000000-0000-0000-0000-000000000001olan 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ı silmek için eylemi kullanın DeleteMultiple . Standart tablolar bu DeleteMultiple eylemi desteklemez, ancak tüm elastik tablolar destekler.

Uyarı

Standart tablolar için BulkDelete eylemini kullanın. Bu eylem, sorguyla eşleşen kayıtların zaman uyumsuz silinmesini sağlar. Daha fazla bilgi için bkz. 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ı belirtin.

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