与实体框架SqlQuery类灌装子实体(Filling child entity with Enti

2019-08-01 19:08发布

我在1两个实体:N的关系:类别和产品。

public class Category 
{
   public int CategoryID { get; set; }
   public string CategoryName { get; set; }

   public virtual ICollection<Product> Products { get; set; }
}

public class Product
{
   public int ProductID { get; set; }
   public string ProductName { get; set; }

  public virtual Product { get; set; }
}

public class context : DbContext
{
    public DbSet<Category> Categories { get; set; }
    public DbSet<Product> Products { get; set; }
}

它可以装载产品通过预先加载每个类别。

context.Categories.Include(c=>c.Products).ToList()

我怎样才能加载产品在每个类别下面的查询一样预先加载?

var q = @"
   SELECT Categories.*
   JOIN Products
   ON Category.CategoryId = Products.CategoryId";
var c = context.Categories.SqlQuery(q).ToList();

它只是一个简单的查询。 我需要使用SqlQuery类来执行一些查询。

Answer 1:

根据这种解释不能:

查询应写入确保其返回所请求类型的真正实体

(我的重点)

因此,只有懒加载(如果启用),您可以加载的Products 的类别的SqlQuery已经运行,这将导致N + 1查询。



Answer 2:

我不认为这是可能兑现从SQL查询得到,如果结果包含多个实体类型实体。



文章来源: Filling child entity with Entity Framework SqlQuery