Plugins 用于多实体创建的CRM 2011插件

Plugins 用于多实体创建的CRM 2011插件,plugins,dynamics-crm-2011,Plugins,Dynamics Crm 2011,我是CRM 2011插件的新手。这里,我是一段抛出错误的代码: private static void addWritoService活动(IOOrganizationService服务,Guid id) { 使用(var crm=new XrmServiceContext(服务)) { var serviceactivity=crm.ServiceAppointSet.Where(c=>c.Id==Id.First(); var serviceitem=crm.brd\u serviceite

我是CRM 2011插件的新手。这里,我是一段抛出错误的代码:

private static void addWritoService活动(IOOrganizationService服务,Guid id)
{
使用(var crm=new XrmServiceContext(服务))
{
var serviceactivity=crm.ServiceAppointSet.Where(c=>c.Id==Id.First();
var serviceitem=crm.brd\u serviceitemSet.Where(c=>c.brd\u RegardingServiceId==serviceactivity.ServiceId);
对于(int i=1;i
我试过这个:

for(int i=1;i
这也会产生误差。你能帮我做这样的计数或者使用其他语法,比如foreach吗? 附言:我也试过:

foreach(serviceitem.ToList()中的变量s)

我看不出这段代码有什么直接的错误,可能是您设置项目和早期绑定类的方式


我建议您阅读一下,尝试按照此处概述的步骤进行操作,因为他正在描述您想要实现的目标。

FetchXML是唯一支持计数和求和功能的东西。 计数和求和被认为是一个聚合。不幸的是,聚合不起作用 正如你提到的,在林克


下面是使用的说明。

正如@Anwar所建议的,Linq到CRM表达式最终会转换为QueryExpressions,而QueryExpressions不支持求和或聚合表达式。我猜Linq Count方法正试图转换为Count Queryexpression,但会失败。现在为什么
serviceitem.ToList().Count()
不起作用,我更困惑了。ToList应该导致获取实体,然后将实体添加到列表中,然后使用标准LINQ计数方法。。。你有LINQ的using语句对吗

为什么不使用
foreach(serviceitem中的var项)

编辑:没有看到评论


根据您的oomment中的错误,您似乎没有在IOrganizationService上启用代理类型,或者没有在服务器上包含自定义实体。

最后我成功地解决了这个问题。ID的比较有助于foreach运行

var serviceitem=crm.brd\u serviceitemSet.Where(c=>c.brd\u RegardingServiceId.Id==serviceactivity.ServiceId.Id);

不支持“Count”方法。您尝试过吗?foreach(服务项中的var s)offcoure!这是使用ur建议时的错误:反序列化程序不知道映射到此名称的任何类型。考虑在DATACONTractRever中更改DeaveCaveNoRever的实现,以返回名称为“CRTENTYRATION”和命名空间“微软.xRM.Client”的非空值。详细信息:<代码> XRMService EngEngs>代码>您的早期绑定类?是的。XrmServiceContext是早期绑定的类。正如我在您的链接中所读到的:“…在CRM 2011中使用LINQ时不支持LINQ计数和求和操作。”。我今天找了很多。在crm 2011插件中使用“foreach”的每个人都遇到了类似的错误。有人知道为什么吗?还有一个提示:当我删除for、foreach等循环语法时,插件运行良好。在这种情况下,它只创建一个“brd_workreportitem”。当我把它放在一个循环中创建多个“brd_workreportitem”时,就看到了错误。因此,关于引用、crm程序集。。。是真的。使用“foreach”怎么样?我已经用过了,但正如我之前所说的,会出现错误。谢谢你的回复Daryl。是的,我在代码开头使用了“usinglinq”语句。正如我在评论中提到的,我还使用了“foreach(serviceitem中的var项)”。它确实遇到了如上所述的错误。