【问题标题】:Key issue with EF Model linking to CRM EntityEF 模型链接到 CRM 实体的关键问题
【发布时间】:2013-06-29 03:55:08
【问题描述】:

我在 MVC4 中有一个简单的模型,它将两个 CRM 产品实体链接在一起。 CRM 实体是由 CrmSvcUtil.exe 生成的早期绑定类,模型为:

namespace Demo.Models
{
  public class ProductLink
  {
      public int Id { get; set; }

      [ForeignKey("ProductSource")]
      [Display(Name = "Product Source")]
      public Guid? SourceId { get; set; }
      public virtual Xrm.Product ProductSource { get; set; }

      [ForeignKey("ProductTarget")]
      [Display(Name = "Product Target")]
      public Guid? TargetId { get; set; }
      public virtual Xrm.Product ProductTarget { get; set; }
  }
}

当我尝试添加我得到的控制器时:

无法检索“Demo.Models.ProductLink”的元数据。在模型生成期间检测到一个或多个验证错误:

  • System.Data.Entity.Edm.EdmEntityType: : EntityType 'RelatedEntityCollection' 没有定义键。定义此 EntityType 的键。
  • System.Data.Entity.Edm.EdmEntityType: : EntityType 'EntityCollection' 没有定义键。定义此 EntityType 的键。
  • System.Data.Entity.Edm.EdmEntityType: : EntityType 'Relationship' 没有定义键。定义此 EntityType 的键。
  • System.Data.Entity.Edm.EdmEntitySet: : EntityType: EntitySet 'RelatedEntityCollections' 基于没有定义键的类型'RelatedEntityCollection'。
  • System.Data.Entity.Edm.EdmEntitySet: : EntityType: EntitySet 'EntityCollections' 基于没有定义键的类型 'EntityCollection'。
  • System.Data.Entity.Edm.EdmEntitySet: : EntityType: EntitySet 'Relationships' 基于没有定义键的类型'Relationship'。

【问题讨论】:

    标签: asp.net-mvc entity-framework dynamics-crm-2011


    【解决方案1】:

    这是行不通的。 CrmSvcUtil.exe 生成的早期绑定实体的编写方式不是它们将首先使用 EF 代码。

    您需要编写自己的早期绑定实体来完成这项工作。您可以手动执行此操作,也可以通过 custom code generation class 获取 CrmSvcUtil.exe。

    另一种方法是为您需要的实体编写手动编码 EF 代码优先兼容类,然后将映射器从它们写入 CrmSvcUtil 早期绑定类。

    【讨论】:

    • 需要向早期绑定实体添加什么以使其与 EF 一起使用?
    • 好吧,我不是 EF 专家,但至少一切都需要一个由代码、代码属性或约定定义的主键。由 CrmSvcUtil.exe 生成的代码继承的底层 Entity 不是为 EF 代码优先使用而设计的。
    • 处理此要求的正确方法是创建符合 EF Code First 的 POCO,然后在 CrmSvcUtil.exe 中基于 Entity 的类和您的 POCO 之间进行映射。您可以将 AutoMapper 视为自动化这些映射的一种可能方式。
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 2021-04-20
    • 2018-12-05
    • 2010-09-29
    相关资源
    最近更新 更多