Makale Özeti

Bugünkü makalemizde Microsoft Dynamics Crm 2011 projemiz içerisindeki herhangi bir entity içerisindeki bilgilere programlamatik olarak sorgu gönderme işlemini inceleyeceğiz

Makale

Merhaba Arkadaşlar

Bugünkü makalemizde Microsoft Dynamics Crm 2011 projemiz içerisindeki herhangi bir entity içerisindeki bilgilere programlamatik olarak sorgu gönderme işlemini inceleyeceğiz.

Custom workflow , plug-in veya ajax uygulamaları yazarken sıklıkla verilere ulaşıp belirli kriterler çerçevesinde bilgilere ulaşmak isteriz ki gelen değerler içerisinde gerek kontrollerimizin yapılmasını gerekse çektiğimiz datayı kullanabilelim.

Makalemizde guid değeri elimizde olan bir contact kartının bilgilerini Microsoft Dynamics Crm içerisinden çekme işlemini inceleyeceğiz.

  • console application projesi açalım .
  • Microsoft Dynamics Crm 2011 e bağlanmak için gerekli olan dll lerimizi uygulamamıza referans edelim.
    "microsoft.xrm.sdk.dll" "Microsoft.Crm.Sdk.Proxy.dll"
  • Uygulamamıza System.Web.Services - System.Runtime.Serialization - System.ServiceModel  referanslarınıda ekleyelim.
  • Yukarıdaki işlemleri gerçekleştirdiysek artık ilgili kod blogumuzu yazmaya başlayabiliriz.

Uygulamamıza yeni bir class ekleyelim ve adına crmmanager adını verelim. ilgili class bizim crm işlemlerimiz için kullanacağımız sınıfımız olacaktır.

Sorgumuzun sonucunda gelecek olan bilgilerimizi barındırması için bir class daha ekleyelim ve adına kisi diyelim. ilgili sınıfımızın 3 adet field 'ı olsun .

Ad
Soyad
EmailAdres

Yukarıdaki işlemler sonucunda crm işlemlerimizi yazacağımız sınıfımızı oluşturduk. Sorgu sonucunda gelecek olan verimizi barındırmak için kisi adını verdiğimiz sınıfımızı da oluşturduk.

Şimdi crmmanager.cs adını verdiğimiz class ımıza gidelim ve ilgili kod larımızı yazalm.

Yukarıda yazmış olduğumuz kodumuzu açıklayalım.

IOrganizationService adında bir nesnemizi class seviyesinde tanımladık . ilgili nesne uygulamamız ile crm server arasında işlemlerimizi yapacak olan nesnedir.

Crmmanager sınıfımızın yapıcı method unda bir yukarıda tanımladığımız nesnemizi ornekledik. ServisBilgisiGetir(); method'unu inceleyelim.

Crm server üzerinde işlem yapmak için öncelikle ilgili crm sunucusu üzerindeki servise baglanmamız gereklidir. ClientCredentials nesnesi içerisinde crm sunucusuna baglanacağımız kullanıcı adı , şifre , domain adı bilgilerini tanımladık .

OrganizationUri kısmında crm sunucuna baglanmamız için gerekli olan svc servisine baglanmak istedik ve gelen baglantı bilgilerini _service nesnesi üzerine atayıp method dan dışarıya servisimizi döndük.

crmmanager adını verdigimiz sınıf içerisinde Kisibilgilerinigetir adında bir method tanımı yapalım. parametre olarak bizden Guid bilgisi istesin ve geriye kisi tipi dönsün.

Yukarıda oluşturmuş olduğumuz method umuzun içerisine verilerimizi getiricek olan kod blogumuzu yazalım.

 

public Kisi Kisibilgisigetir(Guid kisiGuid)

        {

            Kisi KisiBilgi = new Kisi();

            // Condition Expression : nesnesi ile aslında sorgumuzun koşullarını belirtiriz. aşağıdaki conditionexpression ifadesinde contactid değerinin kisiGuid değerine eşit olması şartını verdik.

            ConditionExpression condition1 = new ConditionExpression();

            condition1.AttributeName = "contactid";

            condition1.Operator = ConditionOperator.Equal;

            condition1.Values.Add(kisiGuid);

            // oluşturdugumuz conditionexpression ifadelerimizi ( bir sorguda birden fazla conditionexpression kullanılabilir ) filterexpression nesnesi içerisinde topladık .

            FilterExpression filter1 = new FilterExpression();

            filter1.Conditions.Add(condition1);

            // QueryExpression nesnesi ile sorgumuzu oluşturalım. nesnemizi örnekledigimiz zaman sorgumuzu hangi entity e gonderecegimizi yazdık biz bu alanda contact ( ilglil kişi ) dedik .

            QueryExpression query = new QueryExpression("contact");

            // contact entity si içerisinden hangi field ları çekecegimizi sırası ile belirttik .

            query.ColumnSet.AddColumns("firstname");

            query.ColumnSet.AddColumns("lastname");

            query.ColumnSet.AddColumns("emailaddress1");

            // queryexpression nesnemizin criteria.addfilter methodunu kullanarak yukarıda oluşturmuş olduğumuz filtremizi verdik.

            query.Criteria.AddFilter(filter1);

 

            // Crm server 'a  Request talebinde bulunacağımızı söyledik.

            RetrieveMultipleRequest efr = new RetrieveMultipleRequest()

            {

                Query = query

            };

 

            // Bize dönecek olan değeri karşılamak için entity tipinde boş bir nesne oluşturduk.

             Entity entityResults = null;

            // ve sorgumuzu crm sunucusuna gönderdik.

             entityResults = ((RetrieveMultipleResponse)_service.Execute(efr)).EntityCollection.Entities[0];

            // sorgu sonucunda dönen değerler entityResults adını vermiş olduğumuz nesnemizin içerisine dolacaktır.

            // foreach ile entity mizin attributes larında döndük ve key değerlerine göre tipimize bilgilerimizi aldık.

             foreach (var item in entityResults.Attributes)

             {

                 if (item.Key == "firstname")

                 {

                     KisiBilgi.Ad = entityResults["firstname"].ToString();

                 }

                 else if (item.Key == "lastname")

                 {

                     KisiBilgi.Soyad = entityResults["lastname"].ToString();

                 }

                 else if (item.Key == "emailaddress1")

                 {

                     KisiBilgi.EmailAdres = entityResults["emailaddress1"].ToString();

                 }

             }

 

             return KisiBilgi; // Method dan geriye tipimizi döndük .

        }

 Şimdi uygulamamıza gidelim ve ilgli sınıflarımızı örnekleyerek makalemizi tamamlayalım.

Program.cs

   class Program

    {

        static void Main(string[] args)

        {

            CrmManager crmislemlerim = new CrmManager();

            Kisi GelenKisi = crmislemlerim.Kisibilgisigetir(new Guid("6256B989-247A-E011-B6D4-005056B444DF"));

            if (GelenKisi != null)

            {

                Console.WriteLine("Ad : " + GelenKisi.Ad);

                Console.WriteLine("Soyad : " + GelenKisi.Soyad);

                Console.WriteLine("Email Adres : " + GelenKisi.EmailAdres);

            }

           

        }

    }

Uygulamamızı çalıştıralım.

Bir sonraki makalemizde görüşmek üzere.