我是 CRM(4.0 版)
的新手,我正在尝试根据给定年份(也存储在实体中)返回“yearid”指南。到目前为止,我有:
public static Guid GetYearID(string yearName)
{
ICrmService service = CrmServiceFactory.GetCrmService();
// Create the query object.
QueryExpression query = new QueryExpression("year");
ColumnSet columns = new ColumnSet();
columns.AddColumn("yearid");
query.ColumnSet = columns;
FilterExpression filter = new FilterExpression();
filter.FilterOperator = LogicalOperator.And;
filter.AddCondition(new ConditionExpression
{
AttributeName = "yearName",
Operator = ConditionOperator.Equal,
Values = new object[] { yearName}
});
query.Criteria = filter;
}
但我的问题是:
A)除此之外还有什么代码可以实际存储 Guid?
B) 使用 QueryExpression 是最有效的方法吗?
最佳答案
回复:B)使用 sql 可能更快(我不知道快多少,甚至不知道),但我认为在 99% 的情况下,QueryExpression 在性能方面是完全可以接受的。
回复:A)你已经很接近了,我已经完成了下面的代码。
public static Guid GetYearID(string yearName)
{
ICrmService service = CrmServiceFactory.GetCrmService();
// Create the query object.
QueryExpression query = new QueryExpression("year");
//No need to ask for the id, it is always returned
//ColumnSet columns = new ColumnSet();
//columns.AddColumn("yearid");
//query.ColumnSet = columns;
FilterExpression filter = new FilterExpression();
filter.FilterOperator = LogicalOperator.And;
filter.AddCondition(new ConditionExpression
{
AttributeName = "yearName",
Operator = ConditionOperator.Equal,
Values = new object[] { yearName}
});
query.Criteria = filter;
//We have to use a retrieve multiple here
//In theory we could get multiple results but we will assume we only ever get one
BusinessEntityCollection years = service.RetrieveMultiple(query);
DynamicEntity year = (DynamicEntity)years.BusinessEntities.First();
return ((Guid)year["yearid"]);
}
关于c# - 在 CRM 4.0 中检索单个 Guid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12952918/