Eric's Blog

有需求才有进步

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

CrmService Web Service

1 Retirve Data with ConditionExpression
            CrmService.CrmService ser = new CrmService.CrmService();
            ser.Credentials 
= new NetworkCredential("Administrator""pass@word1""CRMDOMAIN");

            
//CredentialCache cache = new CredentialCache();
            
//cache.Add(new Uri(ser.Url), "Negotiate", new NetworkCredential("Administrator", "pass@word1", "CRMDOMAIN"));
            
//ser.Credentials = cache ;

            QueryExpression query1 
= new QueryExpression();
            query1.EntityName 
= EntityName.contact.ToString();
        

            ColumnSet col 
= new ColumnSet();
            col.Attributes 
= new string[] "fullname""familystatuscode""gendercode" };
            query1.ColumnSet 
= col;

            
//Lookup pc = new Lookup();
            
//pc.type = EntityName.systemuser.ToString();
            
//pc.Value = new Guid("{A08C3155-728C-DA11-8F30-0003FF2689B7}");

            ConditionExpression conExp 
= new ConditionExpression();
            conExp.AttributeName 
= "gendercode";
            conExp.Operator 
= ConditionOperator.Equal;
            conExp.Values 
= new object[] "2" };

            ConditionExpression conExp2 
= new ConditionExpression();
            conExp2.AttributeName 
= "familystatuscode";
            conExp2.Operator 
= ConditionOperator.Equal;
            conExp2.Values 
= new object[] "1" };

            
//conExp.Values[0] = new Guid("{49B4D00F-553E-4A1D-A567-0F9E3399D020}");
            
            FilterExpression filter 
= new FilterExpression();
            filter..FilterOperator 
= LogicalOperator.Or;
            filter.Conditions 
= new ConditionExpression[] { conExp, conExp2 };
            query1.Criteria 
= filter;

            RetrieveMultipleRequest retrieve1 
= new RetrieveMultipleRequest();
            retrieve1.Query 
= query1;

            
try
            
{
                RetrieveMultipleResponse retrieved1 
= (RetrieveMultipleResponse)ser.Execute(retrieve1);

                
foreach (BusinessEntity obj in retrieved1.BusinessEntityCollection.BusinessEntities)
                
{
                    contact c 
= (contact)obj;
                    Picklist p 
= c.gendercode;
                    Picklist p2 
= c.familystatuscode;

                    Console.WriteLine(
string.Format(" FullName: {0}  \n", c.fullname));

                    
if (p != null)
                    
{
                        Console.Write(
string.Format(" Gender:            {0} ({1}) \n", p.name,p.Value));
                    }

                     
if (p2 != null)
                    
{
                        Console.Write(
string.Format(" Family Status:: {0} ({1}) \n", p2.name,p2.Value));
                     }


                    Console.WriteLine(
"=================\n");
                }

            }

            
catch (SoapException sx)
            
{
                Console.WriteLine(sx.Message);
            }


            
catch (Exception ex)
            
{
                Console.WriteLine(ex.Message);
            }

2 Create Data

  //Retirve contact data from CRM server in class method
            CrmService.CrmService ser = new CrmService.CrmService();
            ser.Credentials 
= new NetworkCredential("Administrator""pass@word1""CRMDOMAIN");

            
//CredentialCache cache = new CredentialCache();
            
//cache.Add(new Uri(ser.Url), "Negotiate", new NetworkCredential("Administrator", "pass@word1", "CRMDOMAIN"));
            
//ser.Credentials = cache ;
            try
            
{  
                account objAcc 
= new account();
                objAcc.name 
= "Castor1";                
                Guid guid2 
= ser.Create(objAcc);

                contact objCon 
= new contact();
                objCon.firstname 
= "Lee1";
                objCon.lastname 
= "Peng1";

                Customer c 
= new Customer();
                c.type 
= EntityName.account.ToString();
                c.Value 
= guid2;

                objCon.parentcustomerid 
= c;
                Guid guid1 
= ser.Create(objCon);
            }


            
catch (SoapException sx)
            
{
                Console.WriteLine(sx.Message);
            }

            
catch (Exception ex)
            

                
throw;
            }


            Console.ReadLine();

Delete Data

CrmService.CrmService ser = new CrmService.CrmService();
            ser.Credentials 
= new NetworkCredential("Administrator""pass@word1""CRMDOMAIN");
            
try
            
{
                QueryExpression query1 
= new QueryExpression();
                query1.EntityName 
= EntityName.contact.ToString();

                ColumnSet col 
= new ColumnSet();
                col.Attributes 
= new string[] "contactid""firstname" };
                query1.ColumnSet 
= col;

                RetrieveMultipleRequest retrieved
= new RetrieveMultipleRequest();
                retrieved.Query 
= query1;

                RetrieveMultipleResponse retrieved1 
= (RetrieveMultipleResponse)ser.Execute(retrieved);

                
foreach (BusinessEntity obj in retrieved1.BusinessEntityCollection.BusinessEntities)
                
{
                    contact c 
= (contact)obj;

                    
if (c.firstname!=null&&c.firstname.Trim().Equals("Lee1")) 
                    ser.Delete(EntityName.contact.ToString(), c.contactid.Value);
                }

            }


            
catch (SoapException sx)
            
{
                Console.WriteLine(sx.Message);
            }

            
catch (Exception ex)
            

                
throw;
            }

            Console.ReadLine();

Fetch Data

   Following is the example of the fetchXml:
<fetch mapping="logical">
  
<entity name="contact">
    
<all-attributes />
    
<attribute name="contactid"/>
    
<attribute name="fullname"/>
    
<link-entity name="account" from="accountid"  to="parentcustomerid">
      
<filter type="and">
        
<condition attribute="address1_stateorprovince" operator="like" value="CA%"></condition>
      
</filter>
    
</link-entity>
  
</entity>
</fetch>

   This is calling code:
  CrmService.CrmService ser = new CrmService.CrmService();
            ser.Credentials 
= new NetworkCredential("Administrator""pass@word1""CRMDOMAIN");
            
try
            
{
                
string fetchXML,resultXML;
                
using (StreamReader reader = new StreamReader("XMLFile1.xml"))
                
{
                    fetchXML 
= reader.ReadToEnd();
                }


                
if (fetchXML.Length > 0)
                
{
                    resultXML 
= ser.Fetch(fetchXML);

                    
using (StreamWriter writer = new StreamWriter("XMLResult.xml",false))
                    
{  
                        writer.Write(resultXML);
                        writer.Flush();
                    }

                    
                    Console.WriteLine(resultXML);
                }

            }


            
catch (SoapException sx)
            
{
                Console.WriteLine(sx.Message);
            }

            
catch (Exception ex)
            

                
throw;
            }

            Console.WriteLine(
"Finish.");
            Console.ReadLine();
posted on 2008-04-01 09:53  Eric.Chai  阅读(329)  评论(0)    收藏  举报