Makale Özeti

Bir önceki makalemizde Microsoft Dynamics Crm 2011 QueryExpression Kullanımı nı incelemiştik. Bugünkü örnegimizde ikinci bir sorgulama şekli olan Retrieve method 'undan bahsedeceğiz

Makale

Merhaba Arkadaşlar,

Bir önceki makalemizde Microsoft Dynamics Crm 2011 QueryExpression Kullanımı nı incelemiştik. Bugünkü örnegimizde ikinci bir sorgulama şekli olan Retrieve method 'undan bahsedeceğiz.

Retrieve method'u crm servisi içerisinde gelen hazır bir method'dur. Parametre olarak bizden entity adını , guid adresini , columns değerlerini ister . Hiç bir şart kabul etmeksizin vermiş olduğumuz entity içerisinden belirttigimiz guid değerine sahip kayıt ın istediğimiz kolon bilgilerini bize getirir. Kullanımı ne kadar kolay olursa olsun eğer bir şart'a bağlı işlemler yapmamız gerekiyor ise QueryExpression sınıfını kullanmamız gereklidir.

Hiç bir şarta bağlı olmayan bir kayıt almak istersek o zaman tam aradığımız method. Kullanımı gayet basit ve bize direk olarak entity tipinden nesne olarak dönmektedir.

Makalemizin seneryosunda elimizde bulunan contact guid değerine sahip olan kaydı Retrieve methodunu kullanarak elde edelim.

Visual Studio console application uygulaması açalım

microsoft.xrm.sdk.dll ve Microsoft.Crm.Sdk.Proxy.dll lerini referans olarak ekleyelim.

System.Web.Services - System.Runtime.Serialization - System.ServiceModel  referans edelim.

Crm manager adındaki sınıfımızı oluşturalım .

class Crmmanager

    {

        IOrganizationService _service;

 

        public Crmmanager()

        {

            _service = GetCrm2011Service();

        }

 

        private IOrganizationService GetCrm2011Service()

        {

.

            ClientCredentials credentials = new ClientCredentials();

            credentials.Windows.ClientCredential = new System.Net.NetworkCredential("kullaniciadi", "sifre", "domain");

            Uri organizationUri = new Uri("http://localhost/organization /XRMServices/2011/Organization.svc");

            Uri homeRealmUri = null; OrganizationServiceProxy orgService = new

              OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null);

            _service = (IOrganizationService)orgService;

            return _service;

        }

      

        public void GetRetrieve(Guid g)

        {

 

            Entity Gelen = _service.Retrieve("contact", g), new Microsoft.Xrm.Sdk.Query.ColumnSet() { AllColumns = true });

 

            if (Gelen != null)

            {

                Console.WriteLine("Entity içerisi Dolu");

            }

        }

    }

IOrganizationService _service  nesne örnegini aldık ve crmmanager classımızın yapıcı methodunda GetCrm2011Service method'u ile crm server baglantı ayarlarımızı aldık .

 Entity Gelen = _service.Retrieve("contact", g, new Microsoft.Xrm.Sdk.Query.ColumnSet() { AllColumns = true });

_service.Retrieve(); methodu ile ilk önce hangi entity üzerinde işlem yapacağımızı belirttik. "contact"

Bir sonraki parametresinde bizden ilgili entity içerisindeki hangi alanları getirmek istediğimizi sormaktadır. Ben bu alanda AllColumns özelligine true değerini vererek ilgili entity içerisindeki tüm alanları istediğimi belirttim.

Sorgu sonucunda dönecek olan değer Entity tipinden olacağı için Gelen adını verdiğim Entity tipine gelen sonuç değerini atadım.

Program.cs kısmında ilgili işlemlerimizi çağıralım.

class Program

    {

        static void Main(string[] args)

        {

            Crmmanager m = new Crmmanager();

            m.GetRetrieve(Guid.NewGuid());

        }

    }

Bu alanda aslında şuna dikkat etmek lazım uygulama içerisinde eğer hiç bir şart kullanmadan biz bir entityden sadece guid değeri ile kayıt alacak isek bu işlediğimiz konu gerçekten işimizi fazlasıyla görmekte ve hızlı bir şekilde kod yazımını sağlamakta . 

Ama bizim kriterimiz guid değeri degil ise veya birden fazla kriterde işlem yapacak isek o zaman makalemin başında da söylediğim gibi QueryExpression nesnesini kullanmamız gereklidir.

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