我试图只更新一个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; }
}
答案 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();