Linq更新错误此上下文仅支持基元类型或枚举类型

时间:2018-05-15 11:32:21

标签: c# entity-framework linq entity-framework-6

我试图只更新一个EntityType列。但我在制作连接和更新语句时收到此错误。

此上下文仅支持原始类型或枚举类型。

 var entityCodesRepo = _context.EntityCodes.ToList();

   var qualifiedRecs = await (from px in searchQuery
                                    join ecx in entityCodesRepo on px.EntityCodeID equals ecx.EntityCodeID
                                       select new IDMS_Partner()
                                         {
                                          EntityType = ecx.DisplayLabel
                                         }
                                    ).ToListAsync();

请建议我在哪里弄错了。

[Table("IDMS_Partner")]
    public partial class IDMS_Partner
    {
        [Key]
        public int PID { get; set; }
        public int EntityCodeID { get; set; }
        public string EntityType { get; set; }
     }

1 个答案:

答案 0 :(得分:1)

您无法在Linq-to-Entities中IQueryable加入IEnumerable,因此在加入EntityCodes之前,您不应使用ToList实现searchQuery。第二件事是在EF 6中你无法真正在查询中创建部分实体(虽然在EF Core中不是这样)所以如果IDMS_Partner属于上下文,你将收到错误,所以要么使用匿名类型或一些DTO类。所以最后你的查询应该是这样的:

var entityCodesRepo = _context.EntityCodes;    

var qualifiedRecs = await (from px in searchQuery
                           join ecx in entityCodesRepo on px.EntityCodeID equals ecx.EntityCodeID
                           select new IDMS_PartnerDTO //it doesn't belong to context
                           {
                               EntityType = ecx.DisplayLabel
                           }).ToListAsync();