是否可以在一个请求中对不同的表进行两次查询?
例如,如果我有这个DBContext:
public DbSet<Farm> Farms { get; set; }
public DbSet<Farmer> Farmers { get; set; }
public DbSet<Llama> Llamas { get; set; }
这些课程:
public class Farm
{
[Key]
public Guid ID { get; set; }
public virtual ICollection<Farmer> Farmers { get; set; }
public virtual ICollection<Farmer> Llamas { get; set; }
}
public class Farmer
{
[Key]
public Guid ID { get; set; }
public Guid FarmID { get; set; }
public virtual Farm Farm { get; set; }
}
public class Llama
{
[Key]
public Guid ID { get; set; }
public Guid FarmID { get; set; }
public virtual Farm Farm { get; set; }
}
是否可以在一个查询中进行这两个查询?
public IEnumerable<object> GetInhabitants(Guid farmID)
{
DBContext db = new DBContext();
IEnumerable<Farmer> farmers = db.Farmers.Where(x => x.FarmID == farmID);
IEnumerable<Llama> llamas = db.Llamas.Where(x => x.FarmID == farmID);
return [this would be easier if I could make one query]
}
答案 0 :(得分:-1)
鉴于您的特定设置,我相信您可以做到
return db.Farmers.Where(x => x.FarmID == farmID)
.Union(db.Llama.Where(x => x.FarmID == farmID));
(注意:我正在写下这个,所以语法可能有点偏。)
编辑添加: 您可能希望查找延迟执行。如果您正在使用IQueryable对象,则可以在代码中生成任意数量的Entity Framework请求,但在触发执行之前它通常不会执行它们(通常通过调用.ToList())。 p>