我在使用MSCRM 2011的插件时遇到了一些奇怪的行为 下面的代码是在创建和安装上注册的插件的一部分。更新产品实体的操作。 每个产品都有一些与之相关的任务(定义为活动实体),因此我希望产品的开放任务。
var tasks = from t
in orgContext.CreateQuery("fvm_producttask")
where (t.GetAttributeValue<int>("statuscode") != 2 && t.GetAttributeValue<int>("statuscode") != 3)
where t.GetAttributeValue<EntityReference>("fvm_regardingproduct").Id == product.Id
select t;
String xx = "";
foreach (String x in tasks.First().Attributes.Keys) {
xx += x + "\r\n";
}
throw new InvalidPluginExecutionException(xx);
当我执行上面的代码作为CRM插件时,我在结果中只获得了2个键(subject,activityid),当我删除第二个where子句时,我从producttask实体获得了所有键的所需结果。
有谁知道这种行为的原因? 我知道我可以通过过滤掉其他产品的所有任务来解决这个问题,但这只是一个(肮脏的)解决方法。我想知道为什么上面的代码不起作用。
您可以在下面查看我想要检索的记录。
OwnerId FA7AF161-D666-E111-8537-001E4F1285B0
OwningUser FA7AF161-D666-E111-8537-001E4F1285B0
OwningTeam NULL
OwningBusinessUnit 168D9521-434E-E111-99C9-001E4F1285B0
ActualEnd NULL
VersionNumber 0x00000000002D40BD
ActivityId 655E63A1-84B9-E311-A79F-005056A56527
IsBilled 0
CreatedBy FA7AF161-D666-E111-8537-001E4F1285B0
Description Product Dimensions Required
ModifiedOn 2014-04-01 14:07:11.000
ServiceId NULL
ActivityTypeCode 10134
StateCode 0
ScheduledEnd 2014-04-04 10:01:45.000
ScheduledDurationMinutes 4320
ActualDurationMinutes NULL
StatusCode 1
ActualStart NULL
CreatedOn 2014-04-01 10:01:45.000
PriorityCode 1
RegardingObjectId NULL
Subject Product Requires Attention
IsWorkflowCreated 0
ScheduledStart 2014-04-01 10:01:45.000
ModifiedBy FA7AF161-D666-E111-8537-001E4F1285B0
TimeZoneRuleVersionNumber 0
UTCConversionTimeZoneCode NULL
InstanceTypeCode 0
SeriesId NULL
IsRegularActivity 1
ModifiedOnBehalfBy FA7AF161-D666-E111-8537-001E4F1285B0
CreatedOnBehalfBy NULL
TransactionCurrencyId NULL
ExchangeRate NULL
LeftVoiceMail 0
IsMapiPrivate 0
RegardingObjectTypeCode NULL
RegardingObjectIdName NULL
ImportSequenceNumber NULL
OverriddenCreatedOn NULL
fvm_RegardingProduct 207592F0-E9B8-E311-A79F-005056A56527
fvm_Category 1
答案 0 :(得分:3)
可能是您引用的实体已锁定字段。
您是否在程序流程的早期执行任何操作?
也许在CreateQuery之前尝试Dispose()上下文..(或者,如果相关的话,在using块中包含前面的上下文初始化)
HTH 鲍勃
答案 1 :(得分:0)
使用CRM SDK时,它只会返回具有值的属性。我猜你的第一个任务的所有值都为null,除了Subject和ActivityId。