cub-e.net

just coding...

Dynamics CRM 2011'de Türlerin Kullanımı

 

Microsoft Dynamics CRM 2011 ve Microsoft Dynamics CRM Online'da programlama modeli .NET'in temel türlerini kullanacak şekilde değiştirildi.

Bu tabloda beni en çok şaşırtan ise Customer, Lookup, Owner nesnelerinin artık EntityReference türünden sadece bir değer almaları. CRM'i yeni öğrenler için işler gerçekten kolaylaştırılmış. Artık kod yazarken CRM ile başlayan nesnelerimiz yok.

Aşağıdaki tablo bize Microsoft Dynamics CRM 4.0 ile CRM 2011 arasındaki tür dönüşümünü göstermektedir.

Özellik AdıMicrosoft Dynamics CRM 2011 TürüMicrosoft Dynamics CRM 4.0 Türü

AttributeTypeCode.Boolean

bool ya da System.Boolean

CrmBoolean

AttributeType.CalendarRules

EntityCollection

DynamicEntity[] or calendarrule[]

AttributeType.Customer

EntityReference

Customer

AttributeType.DateTime

System.DateTime

CrmDateTime

AttributeType.Decimal

decimal ya da System.Decimal

CrmDecimal

AttributeType.Double

double ya da System.Double

CrmFloat

AttributeType.Integer

int ya da  System.Integer

CrmNumber

AttributeType.Internal

System.Object

Kayıtlarda Kullanılmaz

Kayıtlarda Kullanılmaz.

AttributeType.Lookup

EntityReference

Lookup

AttributeType.Memo

string ya da System.String 

System.String

AttributeType.Money

 Money

CrmMoney

AttributeType.Owner

EntityReference

Owner

AttributeType.PartyList

 EntityCollection or ActivityParty[]

activityparty[] or DynamicEntity []

AttributeType.Picklist

OptionSetValue

Picklist

AttributeType.PrimaryKey

System.Guid

Key

AttributeType.String

System.String

System.String

AttributeType.State

OptionSetValue yada oluşturulan enumeration kullanılmalı

EntityNameStateInfo

AttributeType.Status

OptionSetValue ya da int

Status

AttributeType.Uniqueidentifier

System.Guid

UniqueIdentifier

AttributeType.Virtual

System.Object

Kayıtlarda Kullanılmaz

Kayıtlarda Kullanılmaz


Eski TürYeni Tür

CrmAttributeType Class (MetadataService)

Microsoft.Xrm.Sdk.Metadata.AttributeTypeCode

Moniker Class (CrmService)

Microsoft.Xrm.Sdk.EntityReference

SecurityPrincipal Class (CrmService)

Microsoft.Xrm.Sdk.EntityReference

OptionSetValue

OptionSetValue’a değer atamak için ilk önce OptionSetValue türünden bir nesne oluşturmanız gerekmektedir.  Burada dikkat çekmek istediğim konu ise eğer state alanı ile çalışacaksanız (yani firma için aktif/pasif, teklif için açık/kazanıldı/kaybedildi gibi) early-bound sınıflarda bunlar için mutlaka bir enumaration oluşturulmakta. Ama late bound sınıflarda bu durumu programcı yönetmektedir.

Örnek olarak adres üzerindeki bir optionset alana değer atama aşağıdaki şekilde olmaktadır;

OptionSetValue osv = new OptionSetValue(1);

contact.Attributes["address1_freighttermscode"] = osv;

 

EntityReference

CRM sisteminde iki entity’yi birbirine bağlamak için lookup nesnesini kullanmak zorundayız. Lookup’lar üzerinde programatik işlem yapabilmek için EntityReference nesnesini kullanmaktayız. Bu nesneye Lookup alana reference vermek istemiz nesnenin türü ve Id’sini vermemiz gerekmektedir.

Aşağıdaki örnekte parentAccountId atama yapılacak nesnenin guid cinsinden Id’si olmalı;

EntityReference parentaccountid = new EntityReference("account", parentAccountId));

accountEntity.Attributes["parentaccountid"] = parentaccountid;

ioService.Update(accountEntity);

Null Değer Atama

CRM 4.0’dan farklı olarak .Net Type türleri kullanıldığı için null değer atama işlemi artık sadece alana değer vermekten ibaret oldu. İşte birkaç örnek;

Entity.IndustryCode = null;

Entity.AccountId = Guid.Empty;

Entity.AccountNumber ="";

Entity.Address1_Country = String.Empty;


Bir makalemizin daha sonu geldik :)

 

CRM Üzerinde Null Değerini Kullanmak

Dynamics CRM üzerinde web servisleri ile çalışırken bir değişkene null değerini atamanız gerekebilir. Ama CRM içerinde attribute'lar kendine has olduğundan attribute'a değil onun  IsNull ve IsNullSpecified değerlerine true vermeniz gerekmektedir. Servis bunu arka tarafta veritabanına yazarken o attribute için null vermesi gerektiğini böyle anlamaktadır. Bunu sql ile ifade etmeye kalkarsak;

" update xxx set yyy = null "

demenin yolu CRM'de aşağıda örnekleri verilen şekilde olmalıdır.

( String türü için durum biraz farklı, String.Empty değerini vermeniz gerekmekte.
)

Aşağıdaki kod örneği size tüm attribute'lar için nasıl null değer atanacağını gösterecektir.


CrmDecimal
dec = new CrmDecimal();
dec.IsNull =
true;
dec.IsNullSpecified =
true;

PickList list =
new PickList();
list.IsNull =
true;
list.IsNullSpecified =
true;

CrmFloat
f = new CrmFloat();
f.IsNull =
true;
f.IsNullSpecified =
true;

CrmMoney
money = new CrmMoney();
money.IsNull =
true;
money.IsNullSpecified =
true;

CrmBoolean
boolean = new CrmBoolean();
boolean.IsNull =
true;
boolean.IsNullSpecified =
true;

Owner
owner = new Owner();
owner.IsNull =
true;
owner.IsNullSpecified =
true;

CrmNumber number = new CrmNumber();
number.IsNull =
true;
number.IsNullSpecified =
true;

Lookup
lookup = new Lookup();
lookup.IsNull =
true;
lookup.IsNullSpecified =
true;

Status
status = new Status();
status.IsNull =
true;
status.IsNullSpecified =
true;

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