【发布时间】:2021-03-24 03:50:46
【问题描述】:
在 .NET 应用程序中,我试图在 repo 层上构造一个 DTO,如下所示。但是,我在语句的深处有一个讨厌的异步函数。我应该如何链接异步调用?
var subtopics; // I have a subtopics array
var topicModel = new TopicModel
{
Id = 0,
SubtopicModels = subtopics
.Select(subtopic => new SubtopicModel
{
Id = 0,
VideoModels = subtopic.Videos // simple await on this line doesn't work
.OrderBy(video => video.OrderInSubtopic)
.Select(async video => new VideoModel
{
Id = 0,
VideoLeftAtSeconds = (await _db.VideoActivities
.FirstOrDefaultAsync(activity => activity.UserId == userId && activity.VideoId == videoId))
.LeftAtSeconds
}).ToList()
}).ToList(),
};
【问题讨论】:
-
这就是整体框架核心吗?子主题从何而来?
-
@DanielA.White 子主题来自哪里并不重要。我排除了所有不相关的代码。我在此代码部分之前有一个子主题数组
-
对不起,你的所作所为很糟糕。如果 suptopic.Videos 集合中有 20 个项目,您将创建 20 个对数据库的查询,这将影响性能。
-
@daney89 那我该怎么办?我想知道你的想法。
标签: c# linq async-await entity-framework-core