IOrganizationService Update Metodu
Bu yazı 25 Mayıs 2019 tarihinde Medium/@dynamics365 altında yayınlanmıştır. 21 Mayıs 2020 tarihinde emregulcan.com altında taşınmıştır.
Merhaba,
Bu yazıda Dynamics 365 CE (CRM) SDK 2da IOrganizationService
interface ‘in sağlamış olduğu Update
metodunu inceleyeceğiz.
Update metodu, Dynamics 365 CE (CRM) ‘de herhangi bir Entity (Varlık) üzerinde bir kaydı tamamen ya da sadece belirli alanlarını güncellememizi sağlamaktadır.
Önemli Noktalar
- Update metodu ile bir kaydı güncelleyebilmek için ilgili kaydın Dynamics 365 CE (CRM) ID bilgisine ihtiyacımız vardır.
- Update metodu sadece 1 parametre almaktadır. Bu parametre Entity türünde, güncellenecek olan Entity bilgisini içeren değerdir.
- Update metodu
void
bir metoddur, geriye değer dönmez. - Update metodu ile sadece 1 kayıt güncellenebilir, SQL ‘de olduğu gibi tablo üzerinde toplu güncelleme işlemi yapılamaz.
Eğer toplu güncelleme işlemi yapmak istiyorsak öncelikli olarak ilgili kritere göre data listesini çekip, bir döngü içinde (foreach
ya da for
vb) bu kayıtları tek tek güncellemeliyiz.
- Update metodu ile bir kayıt güncellendiğinde ModifiedOn alanı otomatik olarak işlem saati olarak güncellenir. Bu alana herhangi bir değer atamanıza gerek yoktur.
- İşlem yapan kullanıcı (
IOrganizationService
‘i oluşturan kimlik sahibi ya daCallerId
olarak verilmiş SystemUser) bilgisi ilgili kaydın ModifiedBy alanına yazılır. - İlgili varlık için Update aşamasına yazılmış Plugin ve Workflow ‘lar tetiklenir.
- Eğer güncelleme yapılan alan için bir ya da birden fazla Plugin ve Workflow varsa bunlar da ayrı ayrı tetiklenir.
- Update işlemi tüm kayıt yerine sadece işlem yapılan alanlar (attribute) için geçerlidir.
Late-bound olarak oluşturduğumuz Entity ‘de eklediğimiz alanlar, Early-bound yapıda ise sadece değer atadığımız Property ‘ler için güncelleme yapılır.
- Daha önce farklı Request yapılarına sahip olan özel işlemler* (
AssignRequest
,SetStateRequest
vb) 2016 yılında yapılan güncelleme ile birlikteUpdate
/UpdateRequest
ile yapılabilir hale geldi. İlgili işlemler için detaylı bilgiye buradan ulaşabilirsiniz. Bu sayede birden fazla OrganizationService çağrısı yapmak yerine tek bir Update işlemi ile birden fazla işlemi yapmak mümkün hale geldi.
.NET Projesi – Örnek Kodlar
.NET projelerimizde Microsoft.CrmSdk.CoreAssemblies
kütüphanelerini kullanarak Dynamics 365 CE (CRM) ‘de Update işlemi yapabiliriz. Bu kütüphaneleri NuGet üzerinden projemize dahil edebiliriz.
Dynamics 365 CE (CRM) SDK kütüphanelerini projemize nasıl ekleyeceğimizi daha önce burada detaylı olarak anlatmıştım.
Yukarıdaki örnek kodda Contact varlığı için emailaddress1
ve mobilephone
alanlarında güncelleme yapılıyor.
email
ve phoneNumber
parametrelerine gönderilen değerler Dynamics 365 CE (CRM) ‘de ilgili Contact kaydında güncellenecektir.
Burada önemli olan nokta, bu değerlere string.empty yani boş değer gönderilirse ilgili kaydın alanları boş olarak güncellenecektir. Bu nedenle Update metotlarınızı yazarken genel metotlar yerine işleme özel metotlar yazarak mevcut datayı kaybetmeden işlem yapmaya dikkat etmelisiniz.
Umarım faydalı bir yazı olmuştur.
IOrganizationService metotları için oluşturduğum Index yazısına buradan ulaşabilirsiniz.
Dynamics 365 CE (CRM) SDK konusunda ilgili tüm yazılara tek nokta üzerinden ulaşmak isterseniz http://www.emregulcan.com/dynamics365-sdk adresine bakabilirsiniz.