繁体   English   中英

如何使用C#在MS Dynamics CRM中为案例的自定义字段设置/获取值

[英]how to set/get value to the custom field of a case in MS Dynamics CRM using C#

我有一个要求,我需要为MS Dynamics CRM中的每个案例提供两个联系字段。因此,我在MS Dynamics CRM中在线创建了一个自定义字段“ SecondaryContact”,其数据类型为case(identity)实体的lookup(contact)。

现在我想将值(联系人ID)从我的应用程序(在C#中)传递到自定义字段,并且我还想检索基于自定义字段的所有案例(联系人ID)

我目前的代码是基于PrimaryContactId检索所有情况

string primaryContactId = Session["ContactId"].ToString().Trim();
var context = new ForessCRMServiceContext(FssServiceProxy.orgService);
var result = from r in context.IncidentSet where r.PrimaryContactId.Equals(primaryContactId) orderby r.CreatedOn descending select r;
foreach (Incident incident in result)
 {
   dr["TICKETID"] = incident.TicketNumber;
   dr["SUBJECT"] = incident.Title;
   dr["STATUS"] = incident.StatusCode.Value;
   dr["ROWNUMBER"] = iRowNumber;
   dr["INCIDENTID"] = incident.IncidentId;
   dt.Rows.Add(dr);

}

和IAM创造这样的案例

string primaryContactId = Session["ContactId"].ToString();          
IOrganizationService _service = FssServiceProxy.orgService;
Entity incident = new Entity();
incident.LogicalName = "incident";

incident["title"] = txtSubject.Text.Trim();
incident["description"] = txtDescription.Text.Trim();
string AccountId = ConfigurationManager.AppSettings["AccountId"]==null|| ConfigurationManager.AppSettings["AccountId"].ToString().Trim().Equals("") ? "" : ConfigurationManager.AppSettings["AccountId"].ToString().Trim();
Guid customerid = new Guid(AccountId);

EntityReference CustomerId = new EntityReference("account", customerid);
incident["customerid"] = CustomerId;
Guid contactid = new Guid(primaryContactId);
EntityReference EprimaryContactId = new EntityReference("contact", contactid);
incident["primarycontactid"] = EprimaryContactId;
Guid TicketID = _service.Create(incident);

我试图像下面那样检索案例,但是却收到错误消息,“'事件'实体不包含名称为'SecondaryContact'的属性。”

QueryExpression query = new QueryExpression();
query.EntityName = "incident";
ColumnSet cols = new ColumnSet();
cols.AddColumns(new string[] { "ticketnumber", "title", "statecode", "incidentid", "SecondaryContact"});
query.ColumnSet = cols;
RetrieveMultipleResponse retrived = new RetrieveMultipleResponse();
RetrieveMultipleRequest retrive = new RetrieveMultipleRequest();
retrive.Query = query;
retrived = (RetrieveMultipleResponse)FssServiceProxy.orgService.Execute(retrive);
var result = retrived.Results; 

请建议我实现这一目标。 提前致谢。

这意味着事件实体不包含“ SecondaryContact”字段。 要获得此名称,您应该打开CRM定制,找到事件实体,将其打开,检查与SecondaryContact对应的字段和字段字段。

该行将永远无法工作:

cols.AddColumns(new string[] { "ticketnumber", "title", "statecode", "incidentid", "SecondaryContact"});

这是因为编写的SecondaryContact无法在CRM中使用。 您已经创建了一个自定义属性(根据您的问题),逻辑名称应为prefix_logicalname 在配置新属性时,将创建此名称,可能是诸如new_secondarycontact类的new_secondarycontact 该逻辑名是您的代码中需要使用的逻辑名,而不是SecondaryContact

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM