我有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并不完全是我的专业领域。
答案 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。