我有一个奇怪的问题,我有很多实体,我在我的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方法,因此它看起来不像罪魁祸首。所有其他转换在我的插件中工作正常 这个问题一定有问题。
答案 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)
演员身上仔细检查我,因为可能不需要 - 我只是没有代码在我面前验证。