【发布时间】:2021-07-29 08:58:00
【问题描述】:
我们正在寻找一种更有效的方法来构建具有完整父/子关系的对象,而不是循环遍历单独查询的结果并将子级分配给父级。现在这似乎是我们代码中的一个大瓶颈(我们经常需要一次处理 1,000 到 1,000,000 个实体。
有没有办法使用带有db.Database.SqlQuery<Parent>("SELECT * FROM xyz) 的查询来返回父/子/孙关系?
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
public List<Child> Children { get; set; }
}
public class Child
{
public int Id { get; set; }
public List<Grandchild> Grandchildren { get; set; }
}
public class Grandchild
{
public int Id { get; set; }
}
【问题讨论】:
-
你考虑过使用实体框架吗?
-
在 Dapper 中,您可以执行
QueryMultiple,它可以提取多个结果集。它还有splitOn,可以将单个结果集拆分为多个对象 -
我们正在使用 EF,但它执行的查询有时非常慢,或者当我们可以使用像这样的常规 SQL 查询来完成时,它会创建许多到数据库的往返。
-
@Ali 因为我们可以将查询结果转换为 ViewModel 我们能够设置 ViewModel 的其他属性,例如父 ID 等,这对我们正在做的事情非常有帮助'没有 EF 查询
标签: c# sql asp.net-mvc