1. Generate early bound types
Run the CrmSvcUtil.exe tool, with the
“Microsoft.Xrm.Client.CodeGeneration” extension, to generate your entity
classes and service contexts. The following is an example command to create a
file called Xrm.cs that points at an instance of Microsoft Dynamics CRM. Note
that the Microsoft.Xrm.Client.CodeGeneration.dll file must be in the same
directory as the CrmSvcUtil.exe file, or in the system global assembly cache,
when you run this command. The first command shown is for an on-premises
organization. The second command is for a CRM Online organization. Both
commands should be executed as a single command line with no line breaks.
CrmSvcUtil.exe
/codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization,
Microsoft.Xrm.Client.CodeGeneration"
/out:Xrm.cs
/url:https://<mydomain>.api.crm.dynamics.com/XRMServices/2011/Organization.svc
/username:<myusername>@<mydomain>.onmicrosoft.com
/password:<mypassword> /namespace:Xrm
/serviceContextName:XrmServiceContext
2. Create a Console Application
project in Visual studio 2012.
3. Add the
following references from the
SDK\bin
folder and from .NET
Also add the EarlyBound.cs File
in your console application that is generated in step1.
4. Add the following using
statements in your Program.cs File.
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Xml.Linq;
using
System.Configuration;
using
System.Data;
using
System.Text;
using
System.ServiceModel;
using
System.ServiceModel.Description;
using
Microsoft.Crm.Sdk.Messages;
using
Microsoft.Xrm.Sdk;
using
Microsoft.Xrm.Sdk.Client;
using
Microsoft.Xrm.Sdk.Query;
using
Microsoft.Xrm.Sdk.Discovery;
using
EarlyBound;
5. Make sure the console project specifies .NET
Framework 4.5.2 as the target framework and not .NET Framework 4.5.2 Client
Profile. Check the
properties of the project by selecting the ConsoleApplication1 project in
Solution Explorer and clicking Alt-Enter.
Right Click
ConsoleApplication1 -> Properties
6. Declare the Main
Method as below
namespace
RetrieveRecords_Early_bound
{
class Program
{
static IOrganizationService
_service;
static void
Main(string[] args)
{
ConnectToMSCRM("UserName", "Password", "Servername");
Guid
userid = ((WhoAmIResponse)_service.Execute(new WhoAmIRequest())).UserId;
if
(userid == Guid.Empty)
{
return; //
Check whether connection established or not
}
retrieveContactRecords();
Console.ReadLine();
}
public static void
ConnectToMSCRM(string UserName, string Password, string SoapOrgServiceUri)
{
// for stablishing
the connection with CRM
try
{
ClientCredentials
credentials = new ClientCredentials();
credentials.UserName.UserName = UserName;
credentials.UserName.Password
= Password;
Uri
serviceUri = new Uri(SoapOrgServiceUri);
OrganizationServiceProxy
proxy = new OrganizationServiceProxy(serviceUri, null,
credentials, null);
proxy.EnableProxyTypes();
_service = (IOrganizationService)proxy;
}
catch (Exception
ex)
{
Console.WriteLine("Error
while connecting to CRM " + ex.Message);
Console.ReadKey();
}
}
public static void
retrieveContactRecords()
{
// For
Retrieve the records using LINQ
using (XrmServiceContext
context = new XrmServiceContext(_service))
{
var
getContactRecords = from conSet in context.ContactSet
where
conSet.StateCode == 0 //Check
for Status == Active
orderby
conSet.FullName
select
conSet;
if
(getContactRecords != null)
{
StringBuilder
fullNameString = new StringBuilder();
Console.WriteLine("Full
Name\n--------------------------");
foreach (var
item in getContactRecords)
{
if
(item.FullName != null)
fullNameString.AppendLine(item.FullName);
}
Console.Write(fullNameString);
Console.ReadKey();
}
}
}
}
}
7. Testing
Compile
the run the console application
8. Testing
Go to CRM and test like below:-
9. Testing
Click on Results