c# - LinqToCRM 未正确转换

标签 c# linq dynamics-crm dynamics-crm-2011

我想将所有查询从 QueryExpression 更改为 Linq。在开发时,一切似乎都很好,但我总是在运行时遇到强制转换异常(无法将 Microsoft.xrm.sdk.entity 强制转换为 Xrm.SystemUser -> Xrm 是使用 CrmSvcUtil 生成的早期绑定(bind)类)。

        var context = new OrganizationServiceContext(crmService);
        SystemUser x = (from c in context.CreateQuery<SystemUser>()
                where c.DomainName == @"pfgc\" + Environment.UserName
                select c).FirstOrDefault();

这段代码很简单。我什至尝试过不使用 Where 子句,但它不会改变任何东西。

我尝试了以下(没有 FirstOrDefault 和 var 而不是 SystemUser)

            var x = (from c in context.CreateQuery<SystemUser>()
                where c.DomainName == @"pfgc\" + Environment.UserName
                select c);

这不会引发异常,但 x 类型是 Microsoft.xrm.sdk.linq.Query。我究竟做错了什么?这似乎正是 SDK 所建议的。

编辑:

GCATNM 有正确答案。如果有人遇到同样的问题,这里有一个工作代码示例:

    public SystemUser GetCurrentUser()
    {
        var context = GetOrgContext();
        return (from c in context.CreateQuery<SystemUser>()
                where c.DomainName == @"pfgc\" + Environment.UserName
                select c).FirstOrDefault();
    }

    public OrganizationServiceContext GetOrgContext()
    {
        var serviceProxy1 = new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null);
        serviceProxy1.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
        return new OrganizationServiceContext(serviceProxy1);
    }

最佳答案

我在使用 LINQ-to-CRM 时遇到了类似的问题并返回到 QueryExpressions 因为它们有效,直到我在寻找其他东西时在一些 SDK 示例中找到解决方案:您需要添加 ProxyTypesBehavior 到您的 IOrganizationService 对象。我不知道它的作用,但这绝对是允许我将 LINQ 与早期绑定(bind)类一起使用的更改(据我所知,LINQ-to-CRM 可以与早期绑定(bind)类)。

因此,在创建 IOrganizationService 之后,您需要的行是:

organizationService.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());

希望对您有所帮助。

关于c# - LinqToCRM 未正确转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5369502/

相关文章:

dynamics-crm - 如何保存记录并立即使用其 GUID

c# - 将带下划线的字符串转换为 TitleCase

c# - 如何对Azure存储表进行批量操作?

c# - 如何发送使用 Wireshark 捕获的 SSL 数据包?

c# - 使用 C# 将属性序列化和反序列化为 list<string> xml 文件

javascript - MS CRM2013 JavaScript选项问题

c# - 如何在对另一个属性求和的同时聚合一个属性?

Linq to SQL 和 Entity Framework 的区别?

c# - Entity Framework - 在连接上使用导航属性

javascript - 无法通过 Dynamics CRM 中的 Javascript 在线设置报价单和货币