Early-Bound tiplerle çalışabilmek için obje modelini bilmeye ihtiyacımız vardır. İşte CrmSvcUtil.exe bize bu kodu üretecek olan programdır.
Program early-bound .Net Framework sınıflarını ve entity modellerini Microsoft Dynamics CRM 2011 içerisinden almakta ve bize bir .cs dosyası halinde vermektedir. Bu noktadan sonra üretilen bu .cs dosyasını ya Visual Studio ile kodunuzun bir parçası olarak kullanabilir ya da bir dll haline getirip projenize referans olarak ekleyebilirsiniz. Bu sayede Visual Studio içerisinde intelli-sense özelliği ile kod geliştirebilirsiniz.
Eğer isterseniz uygulama her bir entity için ayrı bir partial class’da oluşturabilir.
CRM’in sdk’sında bin klasörü içerisinde bulabileceğiniz bu aracı command prompt ile çalıştırabilirsiniz.
crmsvcutil.exe
/url: buraya Organization Service’in adresi gelecek
/out: çıktının hangi dosyaya olacağı bilgisi
/username : servise bağlanılacak kullanıcı adı
/şifre : servise bağlanılacak şifre
Eğer CRM’de zaten kullanıcı olan bir kişi ile oturum açtıysanız k.adı ve şifre belirtmenize gerek yok.
Bu şekilde gerekli cümleyi command promt’a yazdığınızda yukarıdaki ekranda olduğu gibi .cs dosyanızı alabilirsiniz.
Ek olarak aşağıdaki parametreleri de verebilirsiniz;
/serviceContextName: Eğer .cs dosyanızı LINQ Service Context vasıtasıyla LINQ sorgularını da desteklemesini istiyorsanız bu özelliği kullanmalısınız. Buraya türetilecek servis context’inin adını girmelisiniz örneğin “CrmDataContext” gibi.
Burada ek olarak şunu da belirtmeliyim ki bu komutu varsayalında ben hep kullanıyorum. Bu komutu kullandığımız zaman 2 şeyi unutmamız gerekmekte;
- Bir OrganizationContext oluşmakta artık onu kullanmamız gerekmekte, aşağıdaki örnekte olduğu gibi;
CrmDataContext orgContext = new CrmDataContext(ServiseBaglan());
- Crm Servis çağrısına şu özelliği eklememiz gerekmekte;_serviceproxy.EnableProxyTypes();
Bu iki maddenin detayını LINQ ile veri sorgulama makalemde daha detaylı anlatacağım.
/namespace : Varsayılanda .cs dosyası bir namespace olmadan türetilir bu özelliği kullanarak kodu bir namespace altında toplayabilirsiniz.
/language : CrmSvcUtil.exe varsayılanda C# kodu üretil eğer VB kodu üretmek istiyorsanız bu özelliğe VB değerini vermeniz gerekmekte.
Bu tool aşağıdaki örnekte olduğu gibi bir kod üretmektedir;
/// <summary>
/// Bir müşteriyi veya potansiyel müşteriyi temsil eden işletme. Ticari işlemlerde faturalanan şirket.
/// </summary>
[System.Runtime.Serialization.DataContractAttribute()]
[Microsoft.Xrm.Sdk.Client.EntityLogicalNameAttribute(“account”)]
[System.CodeDom.Compiler.GeneratedCodeAttribute(“CrmSvcUtil”, “5.0.9688.1244”)]
public partial class Account : Microsoft.Xrm.Sdk.Entity, System.ComponentModel.INotifyPropertyChanging, System.ComponentModel.INotifyPropertyChanged
{
/// <summary>
/// Default Constructor.
/// </summary>
public Account() :
base(EntityLogicalName)
{
}
public const string EntityLogicalName = “account”;
public const int EntityTypeCode = 1;
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
public event System.ComponentModel.PropertyChangingEventHandler PropertyChanging;
private void OnPropertyChanged(string propertyName)
{
if ((this.PropertyChanged != null))
{
this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar