MS Dynamics CRM System.InvalidCastException

时间:2014-04-06 21:58:19

标签: c# dynamics-crm-2013

我有一个奇怪的问题,我有很多实体,我在我的crm系统中有一个由CRMSvcUtil生成的XrmSchema.cs对我很有用,特别是在使用查询并将它们转换为代码中的实体对象时。这个转换方法适用于所有entites,除了一个,我一直得到 System.InvalidCastException:无法为这一个实体强制转换类型为'Microsoft.Xrm.Sdk.Entity'的对象。以下是生成它的以下代码段,它会在toList()方法中抛出异常:

 public List<etel_productcharacteristic> RetrieveCharacteristic(Guid characteristicId)
        {
            using (XrmDataContext context = new XrmDataContext(CRMConnection.OrganizationService))
            {   
                var query = from characteristic in context.etel_productcharacteristicSet
                            where characteristic.etel_productcharacteristicId == characteristicId && characteristic.statecode.Value == etel_productcharacteristicState.Active
                            select characteristic;
                return query.ToList();


            }
        }

有人能指出这段代码可能有什么问题。顺便说一下,我在互联网上阅读的所有解决方案都建议使用enableproxy方法。在我的情况下,正在初始化组织服务时调用Enableproxy方法,因此它看起来不像罪魁祸首。所有其他转换在我的插件中工作正常  这个问题一定有问题。

1 个答案:

答案 0 :(得分:2)

您需要更改此行:

where characteristic.etel_productcharacteristicId == characteristicId && characteristic.statecode.Value == etel_productcharacteristicState.Active

阅读

where characteristic.etel_productcharacteristicId.Id == characteristicId && characteristic.statecode.Value == (int)etel_productcharacteristicState.Active

老实说,你需要在(int)演员身上仔细检查我,因为可能不需要 - 我只是没有代码在我面前验证。