Dynamic Entity'ler ile ilgili birinci makalemiz veri sorgulama idi. İkinci
makalede ise veri yazma yöntemlerini göreceğiz. Burada dynamic entity'i
anlatmadan önce core entity yöntemiyle veri yazmaya değineceğim. Böylece aradaki
farkları görmemiz daha kolay olacaktır.
Konuyu hatırarsak; bir web servisini add web reference diyerek projenize dahil ettiğinizde visual
studio arka tarafta bir bir class mimarisi oluşturur ve siz o mimariyi
kullanırsınız. Eğer core enitity kullanırsanız, bu class özelleştirme nedeniyle
her firmada farklı bir hal alabilir ve kodu yeniden derlemize neden olur. İşte
bundan kurtularak çalışma zamanında nesneler yaratıp bunlara değer atamayı
göreceğiz.
Hatırlarsanız bir örnek uygulamamız vardı. Senaryo şöyle idi; bir web sitemiz olacak ve bu web sitemize insanlar
ad,soyad,e-mail,ilçe ve il bilgilerini yazarak kayıt olacaklar. Fakat biz forma
girilen e-mail'i kullanarak veritabanımızda bu kişinin kayıtlı olup olmadığını
kontrol edeceğiz eğer yoksa müşteri adayı (lead) olarak bu kişiyi Microsoft
Dynamics CRM'e
kaydedeceğiz.
Kaydet düğmesinin arkasında aşağıdaki kod yer almakta.
Mail adresinin yazılıp yazılmadığına bakıyoruz. Eğer yazıldı ise
dynamicRetrieve metodu ile bu mailinde
birilerinin sistemde olup olmadığına bakıyoruz.

///
<summary>
///
Kaydet Dugmesi Click Olayi
///
</summary>
///
<param name="sender"></param>
///
<param name="e"></param>
protected
void btnSave_Click(object
sender, EventArgs e)
{
if (txtMail.Text
!= "")
{
if (!dynamicRetrieve(txtMail.Text))
{
if (coreCreate())
lblMessage.Text =
"başarıyla oluşturuldu";
if (dynamicCreate())
lblMessage.Text =
"başarıyla oluşturuldu";
}
}
}
Birinci makalede e-mail adresinden kontrol etmeyi gördük. Kontrol
sonucunda e-mail adresinin sistemde bulunmadığını ve oluşturmamız gerektiğini
düşünelim.
1.Core Entity
Burada önemli 3 adım bulunmakta.
1. web servisteki lead sınıfını çağırıyoruz
lead myLead =
new
lead();
2. class içerisindeki proprty'e ilgili değeri atıyoruz
myLead.firstname = txtName.Text.ToString();
3. içersisini veri ile doldurduğumuz class'ı servise oluşturması için
veriyoruz.
MyService.Create(myLead);
///
<summary>
///
coreCreate metdodu Core Entity kavramiyla lead olusturmayi bize gosterecek
///
</summary>
private
bool coreCreate()
{
try
{
// CRM Servis'ini cagiriyoruz
CrmService
MyService = service();
//lead sınıfımız aryoruz ve
üretiyoruz.
lead myLead =
new
lead();
//textbox'ın değer içerip içermediğine
bakıyoruz.
if (txtName.Text
!= string.Empty)
//eğer değer içeriyor ise class
içerisindeki ilgili attribute a değerini veriyoruz.
myLead.firstname = txtName.Text.ToString();
if
(txtSurname.Text != string.Empty)
myLead.lastname = txtSurname.Text.ToString();
if (txtMail.Text
!= string.Empty)
myLead.emailaddress1 = txtMail.Text.ToString();
if (txtState.Text
!= string.Empty)
myLead.address1_stateorprovince = txtState.Text.ToString();
if (txtCity.Text
!= string.Empty)
myLead.address1_city = txtCity.Text.ToString();
//Son olarak da değer atamalarımız bitince
servisin Create metodu ile
//lead imizi oluşturuyoruz.
MyService.Create(myLead);
return
true;
}
catch (Exception
ex)
{
HandleException(ex);
return
false;
}
}
2. Dynamic Entity
Eğer bu oluşturma işlemini dynamic entity özelliğini kullanarak yapmış
olsaydık kod bu sefer aşağıdaki gibi olacaktı.
Ama önce ne yaptığımızı anlatalım;
1. CRM Servis'ini cagiriyoruz. Burada service(); benim
yazdığım bir metod ve crm servisini oluşturuyor.
CrmService
MyService = service();
2. DynamicEntity nesnesini yaratyoruz
DynamicEntity
leadEntity = new
DynamicEntity();
3. Entity ismini veriyoruz.
leadEntity.Name = EntityName.lead.ToString();
4. Eger deger iceriyorsa; Property
nesnemizi cagiriyoruz ve adın ve degeri veriyoruz. Boylece
calisma aninda bir class'in icerisindeki bir nesneye deger
vermis oluyoruz.
StringProperty
firstname = new
StringProperty();
firstname.Name = "firstname";
firstname.Value = txtName.Text;
Tabii burada yeri gelmişken söz etmekte fayda var CRM sadece string türünde bir
değişken biçimi ile çalışmıyor. Yukarıdaki örnek "StringProperty" classından bir
değişken türeterek string oluşturmaya yarıyor. Diğer değişken türleri (sınıflar)
ise aşağıdaki listede yer almakta;
| Sınıf Adı |
Microsoft Dynamics CRM Attribute Türü |
|
CrmBooleanProperty |
CrmBoolean |
|
CrmDateTimeProperty |
CrmDateTime |
|
CrmDecimalProperty |
CrmDecimal |
|
CrmFloatProperty |
CrmFloat |
|
CrmMoneyProperty |
CrmMoney |
|
CrmNumberProperty |
CrmNumber |
|
CustomerProperty |
Customer |
|
DynamicEntity |
N/A |
|
DynamicEntityArrayProperty |
N/A |
|
EntityNameReferenceProperty |
EntityNameReference |
|
KeyProperty |
Key |
|
LookupProperty |
Lookup |
|
OwnerProperty |
Owner |
|
PicklistProperty |
Picklist |
|
Property |
N/A |
|
StateProperty |
State |
|
StatusProperty |
Status |
|
StringProperty |
String |
|
UniqueIdentifierProperty |
UniqueIdentifier |
| N/A |
Internal
Memo
Virtual
|
///
<summary>
///
dynamicCreate metdodu Dynamic Entity kavramiyla lead olusturmayi bize gosterecek
///
</summary>
private
bool dynamicCreate()
{
try
{
// CRM Servis'ini cagiriyoruz
CrmService
MyService = service();
// DynamicEntity nesnesini yaratyoruz
DynamicEntity
leadEntity = new
DynamicEntity();
// Entity ismini veriyoruz.
leadEntity.Name = EntityName.lead.ToString();
// Property'ler icin bir Array
olusturuyoruz.
ArrayList
arrProps = new
ArrayList();
// Textbox deger iceriyor mu diye
kontrol ediyoruz.
if (txtName.Text
!= string.Empty)
{
// Eger deger iceriyorsa; Property
nesnemizi cagiriyoruz ve
// adn ve degeri veriyoruz. Boylece
calisma aninda bir class'in
// icerisindeki bir nesneye deger
vermis oluyoruz.
StringProperty
firstname = new
StringProperty();
firstname.Name = "firstname";
firstname.Value = txtName.Text;
arrProps.Add(firstname);
}
if
(txtSurname.Text != string.Empty)
{
StringProperty
lastname = new
StringProperty();
lastname.Name = "lastname";
lastname.Value = txtSurname.Text;
arrProps.Add(lastname);
}
if (txtMail.Text
!= string.Empty)
{
StringProperty
mail = new
StringProperty();
mail.Name = "emailaddress1";
mail.Value = txtMail.Text;
arrProps.Add(mail);
}
if (txtState.Text
!= string.Empty)
{
StringProperty
state = new
StringProperty();
state.Name = "address1_stateorprovince";
state.Value = txtState.Text;
arrProps.Add(state);
}
if (txtCity.Text
!= string.Empty)
{
StringProperty
city = new
StringProperty();
city.Name = "address1_city";
city.Value = txtCity.Text;
arrProps.Add(city);
}
// Property'leri bir DynamicEntity'e
teslim ediyoruz.
leadEntity.Properties = (Property[])arrProps.ToArray(typeof(Property));
// Ve final entity'imizi olusturmasi
icin servise veriyoruz.
MyService.Create(leadEntity);
return
true;
}
catch (Exception
ex)
{
HandleException(ex);
return
false;
}
}
Uygulamamızı çalıştırdığımızda aşağıdaki ekran görüntüsünü elde edeceğiz.

Bir makale daha burada biter. Hepiniz hoşçakalın.
Barış KANLICA
Yazılım Uzmanı – Software Specialist
brsk@e-kolay.net
www.cub-e.net
Bu yazıyı ilk değerlendiren siz olun
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5