Dynamics CRM 2016 icerisindeki guzel ozelliklerden biri de
artik bir kaydi tanimlamak icin Guid disinda alternative bir anahtar da
tanimlayabiliyor olmamiz. Bu sayede CRM’i baska sistemlerle entegre etmek daha
da kolay hale gelmekte. Excel’den veri aktarimi yapmak ya da baska bir
uygulamayla entegre ederken diger uygulamanin tanimlayicilarini CRM icersinde
tanimlayabilmek bize buyuk esneklik kazandirmakta.
CRM arabiriminde Ayarlar(Settings)->Ozellestirmeler(Customization)->Sistemi
Ozellestir(Customize System) adimlarini takip ederek herhangi bir nesne(entity)yi
actigimizda anahtar tanimlama ekranina ulasabilmekteyiz.

Bu ekran vasitasiyla tanimlayicilari ekran goruntusunde
gosterildigi gibi tanimlayabiliriz.
Burada onemli olan nokta ise gereksinimlerinize gore bir ya
da birden fazla alani birlestirerek bir anahtar olusturabiliyorsunuz.

Bir alternative anahtar olusturdugunuzda arka tarafta CRM
veritabani uzerinde sorgu performansini artirmak amaciyla bir bir sistem ise
calismakta ve bir index olusturulmaktadir. Sistemdeki kayit sayiniza bagli
olarak bu islem biraz zaman alabilir.
Bu arada String, Integer, Decimal alanlari bu islem icin
kullanabilirsiniz. Olusturdugunuz key’i Update ve Upsert (yani Update or Insert)
isleminde kullanabilirsiniz.
using
(var service = new OrganizationService(crmConnection))
{
// Use alternate key (accountnumber)
field to identify an account record
Entity account = new Entity("account", "accountnumber", "MWNS-123");
// Set new credit limit;
account["creditlimit"] = new Money(120000);
// Entity reference using alternate key
(emailaddress1) on contact entity
account["primarycontactid"] = new EntityReference("contact", "emailaddress1", "test@test.com");
UpdateRequest request = new UpdateRequest() { Target = account };
UpdateResponse response = (UpdateResponse)service.Execute(request);
}
Bu kullanim seklinin disinda bir de Entity ve Entity
Reference siniflari icerisinde KeyAttributes olarak da erisme ve kullanma
hakkina sahibiz.
using
(var service = new OrganizationService(crmConnection))
{
// Use alternate key (accountnumber)
field to identify an account record
Entity account = new Entity("account")
{
KeyAttributes = new KeyAttributeCollection
{
{"accountnumber", "MWNS-123" }
}
};
// Set new credit limit;
account["creditlimit"] = new Money(100000);
// Entity reference using alternate key
(emailaddress1) on contact entity
account["primarycontactid"] = new EntityReference("contact")
{
KeyAttributes = new KeyAttributeCollection
{
{"emailaddress1", "test@test.com"}
}
};
UpdateRequest request = new UpdateRequest() { Target = account };
UpdateResponse response = (UpdateResponse)service.Execute(request);
}
Eger CRM icerisinde talep ettigiginiz key bulunmaz ise
asagidaki hatayi alabilirsiniz.
A record
with the specified key values does not exist in account entity
Bu linklerden daha detayli bilgi alabilirsiniz.