This sample shows how to create, retrieve, and update a contact as a dynamic entity.
1: //# Using Dynamic Entities
2: using System;
3: using System.Collections;
4: 5: using CrmSdk;
6: using Microsoft.Crm.Sdk.Utility;
7: 8: namespace Microsoft.Crm.Sdk.HowTo
9: {10: /// <summary>
11: /// This sample shows how to create a contact with a DynamicEntity and
12: /// retrieve it as a DynamicEntity.
13: /// </summary>
14: public class DynamicEntityHowTo
15: {16: static void Main(string[] args)
17: {18: // TODO: Change the server URL and organization to match your Microsoft
19: // Dynamics CRM Server and Microsoft Dynamics CRM organization.
20: DynamicEntityHowTo.Run("http://localhost:5555", "CRM_SDK");
21: } 22: 23: public static bool Run(string crmServerUrl, string orgName)
24: {25: bool success = false;
26: 27: try
28: {29: // Set up the CRM Service.
30: CrmService service = CrmServiceUtility.GetCrmService(crmServerUrl, orgName); 31: 32: #region Setup Data Required for this Sample
33: 34: // Create the account object.
35: account account = new account();
36: account.name = "Fourth Coffee";
37: 38: // Create the target object for the request.
39: TargetCreateAccount target = new TargetCreateAccount();
40: target.Account = account; 41: 42: // Create the request object.
43: CreateRequest createRequest = new CreateRequest();
44: createRequest.Target = target; 45: 46: // Execute the request.
47: CreateResponse createResponse = (CreateResponse)service.Execute(createRequest); 48: Guid accountID = createResponse.id; 49: 50: #endregion
51: 52: #region Create Contact Dynamically
53: 54: // Set the properties of the contact using property objects.
55: StringProperty firstname = new StringProperty();
56: firstname.Name = "firstname";
57: firstname.Value = "Jesper";
58: StringProperty lastname = new StringProperty();
59: lastname.Name = "lastname";
60: lastname.Value = "Aaberg";
61: 62: // Create the DynamicEntity object.
63: DynamicEntity contactEntity = new DynamicEntity();
64: 65: // Set the name of the entity type.
66: contactEntity.Name = EntityName.contact.ToString(); 67: 68: // Set the properties of the contact.
69: contactEntity.Properties = new Property[] {firstname, lastname};
70: 71: // Create the target.
72: TargetCreateDynamic targetCreate = new TargetCreateDynamic();
73: targetCreate.Entity = contactEntity; 74: 75: // Create the request object.
76: CreateRequest create = new CreateRequest();
77: 78: // Set the properties of the request object.
79: create.Target = targetCreate; 80: 81: // Execute the request.
82: CreateResponse created = (CreateResponse) service.Execute(create); 83: 84: #endregion
85: 86: #region Retrieve Contact Dynamically
87: 88: // Create the retrieve target.
89: TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic();
90: 91: // Set the properties of the target.
92: targetRetrieve.EntityName = EntityName.contact.ToString(); 93: targetRetrieve.EntityId = created.id; 94: 95: // Create the request object.
96: RetrieveRequest retrieve = new RetrieveRequest();
97: 98: // Set the properties of the request object.
99: retrieve.Target = targetRetrieve;100: // Be aware that using AllColumns may adversely affect
101: // performance and cause unwanted cascading in subsequent
102: // updates. A best practice is to retrieve the least amount of
103: // data required.
104: retrieve.ColumnSet = new AllColumns();
105: 106: // Indicate that the BusinessEntity should be retrieved as a DynamicEntity.
107: retrieve.ReturnDynamicEntities = true;
108: 109: // Execute the request.
110: RetrieveResponse retrieved = (RetrieveResponse) service.Execute(retrieve); 111: 112: // Extract the DynamicEntity from the request.
113: DynamicEntity entity = (DynamicEntity)retrieved.BusinessEntity; 114: 115: // Extract the fullname from the dynamic entity
116: string fullname;
117: 118: for (int i = 0; i < entity.Properties.Length; i++)
119: {120: if (entity.Properties[i].Name.ToLower() == "fullname")
121: { 122: StringProperty property = (StringProperty) entity.Properties[i]; 123: fullname = property.Value;124: break;
125: } 126: } 127: 128: #endregion
129: 130: #region Update the DynamicEntity
131: 132: // This part of the example demonstrates how to update properties of a
133: // DynamicEntity.
134: 135: // Set the contact properties dynamically.
136: // Contact Credit Limit
137: CrmMoneyProperty money = new CrmMoneyProperty();
138: 139: // Specify the property name of the DynamicEntity.
140: money.Name="creditlimit";
141: money.Value = new CrmMoney();
142: 143: // Specify a $10000 credit limit.
144: money.Value.Value=10000M; 145: 146: // Contact PreferredContactMethodCode property
147: PicklistProperty picklist = new PicklistProperty();
148: 149: // Specify the property name of the DynamicEntity.
150: picklist.Name="preferredcontactmethodcode";
151: picklist.Value = new Picklist();
152: 153: // Set the property's picklist index to 1.
154: picklist.Value.Value = 1; 155: 156: // Contact ParentCustomerId property.
157: CustomerProperty parentCustomer = new CustomerProperty();
158: 159: // Specify the property name of the DynamicEntity.
160: parentCustomer.Name = "parentcustomerid";
161: parentCustomer.Value = new Customer();
162: 163: // Set the customer type to account.
164: parentCustomer.Value.type = EntityName.account.ToString(); 165: 166: // Specify the GUID of an existing CRM account.
167: // SDK:parentCustomer.Value.Value = new Guid("A0F2D8FE-6468-DA11-B748-000D9DD8CDAC");
168: parentCustomer.Value.Value = accountID; 169: 170: // Update the DynamicEntities properties collection to add new properties.
171: // Convert the properties array of DynamicEntity to an ArrayList.
172: ArrayList arrProps = new ArrayList(entity.Properties);
173: 174: // Add properties to ArrayList.
175: arrProps.Add(money); 176: arrProps.Add(picklist); 177: arrProps.Add(parentCustomer); 178: 179: // Update the properties array on the DynamicEntity.
180: entity.Properties = (Property[])arrProps.ToArray(typeof(Property));
181: 182: // Create the update target.
183: TargetUpdateDynamic updateDynamic = new TargetUpdateDynamic();
184: 185: // Set the properties of the target.
186: updateDynamic.Entity = entity; 187: 188: // Create the update request object.
189: UpdateRequest update = new UpdateRequest();
190: 191: // Set request properties.
192: update.Target = updateDynamic; 193: 194: // Execute the request.
195: UpdateResponse updated = (UpdateResponse)service.Execute(update); 196: 197: #endregion
198: 199: #region check success
200: 201: if (retrieved.BusinessEntity is DynamicEntity)
202: {203: success = true;
204: } 205: 206: #endregion
207: 208: #region Remove Data Required for this Sample
209: 210: service.Delete(EntityName.contact.ToString(), created.id); 211: service.Delete(EntityName.account.ToString(), accountID); 212: 213: #endregion
214: }215: catch (System.Web.Services.Protocols.SoapException ex)
216: {217: // Add your error handling code here...
218: Console.WriteLine(ex.Message + ex.Detail.InnerXml); 219: } 220: 221: return success;
222: } 223: } 224: }
No comments:
Post a Comment