检查CRM记录是否存在

时间:2016-10-07 11:51:38

标签: c# sharepoint crm dynamics-crm-2013

我有CRM网址,我想使用这些网址检查CRM记录是否存在。最简单快捷的方法是检查页面的值"记录不可用"据我所知。

WebRequest request = WebRequest.Create(crmLink);
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
bool websiteExists = (response != null && response.StatusCode == HttpStatusCode.OK);
string siteContents = "";
if (websiteExists)
{
    using (StreamReader reader = new StreamReader(response.GetResponseStream()))
    {
        siteContents = reader.ReadToEnd();
    }
}

两个问题,几乎整个身体都是iframe,第二个问题是当我检查" siteContents"我没有看到iframe。我对如何获取CRM记录的整个想法可能是错误的; CRM并不完全是我的专业领域。

enter image description here

3 个答案:

答案 0 :(得分:1)

好的,这应该很容易。 您将URL拆分为多个部分以获取参数。 这里重要的是etn = account和id = 36345eb0-728c-e611-9421-00153d29152e, ent是实体逻辑名称,id是记录的id

一旦有了你打电话的人,就设置了组织服务连接,并尝试获取记录

看起来应该是这样的。

var entity = crmService.Retrieve("account", Guid.Parse("36345eb0-728c-e611-9421-00153d29152e"),new ColumnSet(true));

如果它存在,这应该是你的记录。

有关检索的详细信息:

https://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.iorganizationservice.retrieve.aspx

答案 1 :(得分:1)

Retrieve方法的问题在于,当给定标识符找不到记录时,它将引发异常。如果您不确定记录是否存在,最好通过RetrieveMultiple进行浏览。

// do actual initialization - but that's another topic :)
IOrganizationService organizationService = null;

var query = new QueryExpression
{
  NoLock = true,
  TopCount = 1,
  EntityName = "account",
  // if you want to check just for existence of record use ColumnSet(false)
  // if you want to check entity columns use ColumnSet(true) 
  // or specify columns you want to fetch
  ColumnSet = new ColumnSet(false)
};

query.Criteria.AddCondition(
  "accountid", 
  ConditionOperator.Equal, 
  new Guid("36345eb0-728c-e611-9421-00153d29152e"));

var entities = organizationService.RetrieveMultiple(query);

// entities.Entities is guaranteed to be not null
if (entities.Entities.Count == 0)
{
  // snap - no such entity
  return;
}

var entity = entities.Entities[0];

答案 2 :(得分:0)

如果您有URL,则您拥有记录ID。更好的方法是查询CRM Web服务并在数据库中搜索该记录ID。