【问题标题】:Error when using Linq to CRM with Early Bound Entities将 Linq to CRM 与早期绑定实体一起使用时出错
【发布时间】:2013-04-01 17:37:13
【问题描述】:

我正在 CRM 2011 中编写一个插件。我正在尝试使用 Linq to CRM 来检索实体记录,这里是代码 sn-p:

Entity legalcase = new Entity("lgl_legalcase");
legalcase = legalDataContext.Lgl_legalcaseSet.FirstOrDefault(l => l.Lgl_legalcaseId == legalCaseGUID);

它在这一行抛出一个错误,说它不能从类型 Microsoft.Xrm.Sdk.Entity 转换为类型 Legal.Entities.Lgl_legalcase。我已经验证这个插件在使用 Retrieve 方法而不是 LINQ 语法时可以正常工作,但我想让它与 LINQ 一起使用。有谁知道为什么会抛出错误?

【问题讨论】:

  • 暂时,假设错误是有效的......在最后写.ToEntity<Lgl_legalcase>(),看看会发生什么。在插件中,这通常是解决方案。我不会详细说明为什么会出现这种情况或其他解决方法。
  • 我尝试将其添加到末尾,但仍然收到相同的错误。
  • var something = legalDataContext.Lgl_legalcaseSet.FirstOrDefault(l => l.Lgl_legalcaseId == legalCaseGUID) 有什么用?我假设这将返回 Microsoft.Xrm.Sdk.Entity 类型。
  • 使用 var something 语句,我仍然收到同样的错误。
  • 如果我在下面提交的答案回答了您的问题,请将其标记为答案;否则,请提交更多信息。谢谢。

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


【解决方案1】:

你需要投射:

Entity legalcase = new Entity("lgl_legalcase")
legalcase = (Entity)legalDataContext.Lgl_legalcaseSet.FirstOrDefault(l => l.Lgl_legalcaseId == legalCaseGUID);

或将 legalcase 定义为Lgl_legalcase 类型

Lgl_legalcase legalcase = new Lgl_legalcase();
legalcase = legalDataContext.Lgl_legalcaseSet.FirstOrDefault(l => l.Lgl_legalcaseId == legalCaseGUID);

【讨论】:

  • 我在尝试这两种方法时仍然收到同样的错误。
  • 你到底得到了哪个错误?因为您想将早期绑定转换为后期绑定,但您在问题中写的错误看起来您正在做相反的事情
  • 这是实际的错误描述:“无法从 Microsoft.Xrm.Sdk.Entity 类型转换为 Legal.Entities.Lgl_legalcase 类型。”
【解决方案2】:

我刚刚重构了我的代码,使代理现在位于我的插件引用的库中;在重构之后,我收到了这个错误信息。

在网上搜索了 20 秒后,我找到了以下建议的修复方法: 将[assembly: Microsoft.Xrm.Sdk.Client.ProxyTypeAssemblyAttribute()] 添加到插件程序集

我的虚拟机出现故障,不允许我复制和粘贴,否则,我会分享来自 Microsoft 社交的链接,并注明复制此链接的人。

【讨论】:

    猜你喜欢
    • 2013-11-12
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多