【发布时间】:2014-05-12 07:59:31
【问题描述】:
我在使用 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 个键(主题、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
【问题讨论】:
-
您能否包含与您的 fvm_regardingproduct 相关的示例任务中的数据?当值为空时,我已经看到属性集合中根本不存在 Key 的情况。一般来说,出于这个原因,我更喜欢使用强类型、生成的代理类型而不是属性集合。
-
您有任何现场级别的安全措施吗?
-
@Daryl 不,我没有。
-
我做了一些调试,发现执行插件的产品的每个任务只返回2个属性,其他产品的任务似乎返回所有属性。插件是否有可能在执行期间锁定了某些字段,这就是为什么我没有获得所有属性?
-
@Vosje 在插件运行之前任务是否存在?我会打开 CRM 跟踪并验证生成的 SQL 语句看起来应该是这样。
标签: asp.net linq-to-entities dynamics-crm-2011