首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用实体框架SqlQuery填充子实体

用实体框架SqlQuery填充子实体
EN

Stack Overflow用户
提问于 2012-10-23 21:15:39
回答 2查看 3.6K关注 0票数 1

我有两个1:n关系的实体: Category和Product。

代码语言:javascript
复制
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; }
}

可以通过急切加载来加载每个类别的产品。

代码语言:javascript
复制
context.Categories.Include(c=>c.Products).ToList()

如何加载下面查询中的每个类别的产品,与紧急加载相同?

代码语言:javascript
复制
var q = @"
   SELECT Categories.*
   JOIN Products
   ON Category.CategoryId = Products.CategoryId";
var c = context.Categories.SqlQuery(q).ToList();

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

EN

回答 2

Stack Overflow用户

发布于 2012-10-24 05:05:06

根据this explanation的说法,你不能:

编写查询时,应确保它只返回真正属于所请求类型的实体

(我的重点)

因此,只有通过延迟加载(如果启用),您才能在SqlQuery运行后加载类别的Products,这将导致n+1查询。

票数 0
EN

Stack Overflow用户

发布于 2012-10-24 05:06:44

如果结果包含多个实体类型,我认为不可能物化从Sql查询中获得的实体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13031281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档