[英]Select inside Include in EF Core
I have an entity that looks like this (partially removed for brevity, it includes many other properties): 我有一个看起来像这样的实体(为简洁起见部分删除,它包含许多其他属性):
public class Tender
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string CreatorId { get; set; }
[ForeignKey("CreatorId")]
public virtual AppUser Creator { get; set; }
public ICollection<TenderCircle> TenderCircles { get; set; } = new List<TenderCircle>();
}
The TenderCircles
property is used to provide a many-to-many relationship with another entity called Circle
. TenderCircles
属性用于与另一个名为Circle
实体提供多对多关系。 TenderCircle
entity looks like this: TenderCircle
实体看起来像这样:
public class TenderCircle
{
public int TenderId { get; set; }
[ForeignKey("TenderId")]
public Tender Tender { get; set; }
public int CircleId { get; set; }
[ForeignKey("CircleId")]
public Circle Circle { get; set; }
}
Now, I'm doing the following query (partially removed for brevity, normally it includes many other Include
and ThenInclude
statements): 现在,我正在执行以下查询(为简便起见,部分删除了该查询,通常它包含许多其他的
Include
和ThenInclude
语句):
return _context.Tenders
.Include(t => t.Creator)
.Include(t => t.TenderCircles.Select(tc => new { CirlceId = tc.CircleId, TenderId = tc.TenderId }))
.ToList();
But, it simply doesn't work. 但是,它根本不起作用。 What I want to achieve is that I only want to get the
TenderId
and CircleId
properties from TenderCircle
and ignore the actual Tender
and Circle
objects. 我要实现的是,我只想从
TenderCircle
获取TenderId
和CircleId
属性,而忽略实际的Tender
和Circle
对象。 Any idea how to achieve this in EF Core ? 知道如何在EF Core中实现这一目标吗?
Write your query as follows: 编写查询,如下所示:
return _context.Tenders.Select(t => new TenderViewModel
{
Id = t.Id,
Creator = t.Creator,
TenderCircles = t.TenderCircles.Select(tc => new TenderCircle { CirlceId = tc.CircleId, TenderId = tc.TenderId }).ToList();
}).ToList();
Then TenderViewModel
as follows: 然后
TenderViewModel
如下:
public class TenderViewModel
{
public int Id { get; set; }
public AppUser Creator { get; set; }
public List<TenderCircle> TenderCircles { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.