1.给类型赋值不同
CRM4 plugin给lookup赋值为空 :
Lookup lookupnull = new Lookup(); lookupnull.IsNull = true; lookupnull.IsNullSpecified = true; entity.Properties["new_storeroom_areaid"] = lookupnull;
CRM2011 给 EntityReference 赋值为空:
entity["new_storeroom_areaid"] = null;
2.单表查询,返回Entity
CRM4.0 :
private DynamicEntity GetNewPrInfo(Guid NewPrID)//根据GUID查询某字段 { ColumnSet colSet = new ColumnSet(NewPrInfo.EntityName); colSet.AddColumn(NewPrInfo.AttributeName_Assigner); colSet.AddColumn(NewPrInfo.AttributeName_AssignNode); TargetRetrieveDynamic target = new TargetRetrieveDynamic(); target.EntityId = NewPrID; target.EntityName = NewPrInfo.EntityName; RetrieveRequest request = new RetrieveRequest(); request.ColumnSet = colSet; request.ReturnDynamicEntities = true; request.Target = target; RetrieveResponse response = (RetrieveResponse)this.crmService.Execute(request); DynamicEntity PromotionPe = (DynamicEntity)response.BusinessEntity; return PromotionPe; }
CRM2011:
Entity accEntity = service.Retrieve(“new_test”, new_testid, new ColumnSet("字段1", "字段2"));//根据GUID,查询实体new_test的字段1和字段2的值。 Entity accEntity = service.Retrieve(entityName, entityId, new ColumnSet(true));//根据GUID,查询实体new_test的所有字段。
3.初始化CRM组织服务
CRM4:
CrmAuthenticationToken token = new CrmAuthenticationToken(); token.AuthenticationType = 0; token.OrganizationName = "AdventureWorksCycle"; CrmService service = new CrmService(); service.Url = ""http://<servername>:<port>/mscrmservices/2007/crmservice.asmx"; service.CrmAuthenticationTokenValue = token; service.Credentials = System.Net.CredentialCache.DefaultCredentials;
CRM2011:
IFD 的服务前面的段必须是https,不分内部和外部。 Uri orgServiceUri = new Uri("https://192.168.1.101/MicrosoftDynamicCRM/XRMServices/2011/Organization.svc"); ClientCredentials credentials = new ClientCredentials(); credentials.UserName.UserName = CRMUserName; credentials.UserName.Password = CRMUserPassword; OrganizationServiceProxy crmServiceProxy = new OrganizationServiceProxy(orgServiceUri, null, credentials, null); crmService = (IOrganizationService)crmServiceProxy; 2. on-premise 内部部署(AD认证),,初始化WebService时的方式如下: 服务前面的段可以是https,也是可以http 如果没有路由映射 外网是访问不了 只能内网访问 Uri organizationUri = new Uri("http://192.168.1.101/MicrosoftDynamicCRM/XRMServices/2011/Organization.svc"); IServiceConfiguration<IOrganizationService> orgConfigInfo = ServiceConfigurationFactory.CreateConfiguration<IOrganizationService>(organizationUri); var Orgcreds = new ClientCredentials(); Orgcreds.Windows.ClientCredential = new System.Net.NetworkCredential("administrator", "admiN123", "DynamicCRM.com"); OrganizationServiceProxy _serviceproxy = new OrganizationServiceProxy(orgConfigInfo, Orgcreds); return (IOrganizationService)_serviceproxy; 这样子也可以: Uri orgServiceUri = new Uri(Config.CrmWebServiceUrl); var credentials = new ClientCredentials(); credentials.Windows.ClientCredential = new System.Net.NetworkCredential(Config.CrmServerAccount, Config.CrmServerPSW, Config.CrmServerDomain); OrganizationServiceProxy _serviceproxy = new OrganizationServiceProxy(orgServiceUri, null, credentials, null); return (IOrganizationService)_serviceproxy;
4.返回多个实体
CRM4:
// Create a column set holding the names of the columns to be retrieved. ColumnSet cols = new ColumnSet(); cols.Attributes = new string [] {"name", "accountid"}; // Create the query object. QueryByAttribute query = new QueryByAttribute(); query.ColumnSet = cols; query.EntityName = EntityName.account.ToString(); // The query will retrieve all accounts whose address1_city is Sammamish. query.Attributes = new string [] {"address1_city"}; query.Values = new string [] {"Sammamish"}; // Execute the retrieval. BusinessEntityCollection retrieved = service.RetrieveMultiple(query);
CRM2011:
方法一:
string fetchxml = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false' aggregate='true'> <entity name='new_po_exp_detail'> <attribute name='new_exp_amount' alias='new_exp_amount_sum' aggregate='sum' /> <attribute name='new_submit_amout' alias='new_submit_amout_sum' aggregate='sum' /> <attribute name='new_expense_category' alias='new_expense_category' groupby='true' /> <filter type='and'> <condition attribute='statecode' operator='eq' value='0' /> </filter> <link-entity name='new_po' from='new_poid' to='new_po_exp_detail' alias='ab'> <filter type='and'> <condition attribute='statecode' operator='eq' value='0' /> <condition attribute='new_po_status' operator='in'> <value>5</value> <value>7</value> </condition> <condition attribute='new_promotion_pe' operator='eq' value='" + new_promotion_peId + @"' /> </filter> </link-entity> </entity> </fetch>"; EntityCollection entitycols = service.RetrieveMultiple(new FetchExpression(fetchxml));
方法二:
QueryByAttribute query = new QueryByAttribute("new_categorytate"); query.ColumnSet = new ColumnSet("new_categorytateid"); query.AddAttributeValue("statecode", 0); query.AddAttributeValue("new_sn", new_sn);//产品品类编号 EntityCollection encols = service.RetrieveMultiple(query);