CRM插件 - Linq结果中缺少属性

时间:2014-04-01 13:39:23

标签: asp.net linq-to-entities dynamics-crm-2011

我在使用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 

2 个答案:

答案 0 :(得分:3)

可能是您引用的实体已锁定字段。

您是否在程序流程的早期执行任何操作?

也许在CreateQuery之前尝试Dispose()上下文..(或者,如果相关的话,在using块中包含前面的上下文初始化)

HTH 鲍勃

答案 1 :(得分:0)

使用CRM SDK时,它只会返回具有值的属性。我猜你的第一个任务的所有值都为null,除了Subject和ActivityId。