我有两个1:n关系的实体: Category和Product。
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来执行一些查询。
发布于 2012-10-24 05:05:06
根据this explanation的说法,你不能:
编写查询时,应确保它只返回真正属于所请求类型的实体
(我的重点)
因此,只有通过延迟加载(如果启用),您才能在SqlQuery运行后加载类别的Products,这将导致n+1查询。
发布于 2012-10-24 05:06:44
如果结果包含多个实体类型,我认为不可能物化从Sql查询中获得的实体。
https://stackoverflow.com/questions/13031281
复制相似问题