【发布时间】:2021-03-16 05:02:32
【问题描述】:
我正在发现带有 Entity Framework 的 .NET Core。
有我的数据结构:
public class User
{
public int Id { get; set; }
public List<Data1> Datas1 { get; set; }
}
public class Data1
{
public int Id { get; set; }
public User User { get; set; }
public List<Data1_Data2> Datas2 { get; set; }
}
public class Data2
{
public int Id { get; set; }
public List<Data1_Data2> Datas1 { get; set; }
}
public class Data1_Data2
{
public int Data1Id { get; set; }
public Data1 Data1 { get; set; }
public int Data2Id { get; set; }
public Data2 Data2 { get; set; }
}
我的目标是检索用户拥有的所有 Data2 对象。
其实我是在尝试用EF做这个请求:
SELECT d.* FROM User a
INNER JOIN
Data1 b
ON a.Id = b.UserId
INNER JOIN
Data1_Data2 c
ON
c.Data1Id = b.Id
INNER JOIN
Data2 d
ON
d.Id = c.Data2Id
WHERE a.Id = <myId>
目前,我正在像这样使用 EF:
User dbUser = await _context.Users.Include(u => u.Datas1).ThenInclude(b => b.Datas2).ThenInclude(lb => lb.Data1).FirstAsync(u => u.Id == <myId>);
List<Data2> datas2List = new List<Data2>();
foreach (Data1 b in dbUser.Data1s)
{
foreach (Data1_Data2 lb in b.Datas2)
{
Datas2List.Add(lb.Data2);
}
}
我可以只获取 Data2 的列表而不下载所有数据吗?例如,如果 User 相对于 1M+ Data1 对象,我的内存就会爆炸。而且我不想出于结构目的将 User 放入 Data2 中。我正在寻找这样的东西:
List<Data2> datas2List = await _context.<myStuff>
【问题讨论】:
标签: sql-server entity-framework-core asp.net-core-webapi