0

我来给你一些建议。我正在开发一个需要外部库的控制台应用程序(服务器)。

我使用实体框架核心。但是我对 async / await 的概念仍然存在差距。我已经阅读了很多东西,尝试了很多东西。

我建立了一个关于数据库和 ECS(实体组件系统)架构的实体/DAL/BLL 架构。

我有调用事件(OnInitialized)的系统。在这种情况下,我需要从数据库加载不同的数据(取决于系统)。

在同一个 DbContext 上同时进行多个并行查询是不可能的。我只有一个包含多个表的数据库。

那么我应该开发与数据库完全同步的交互吗?

或者是否有同时使用多个异步的模式?

4

2 回答 2

0

实体框架 DbContext 不是线程安全的。所以你不应该使用 DbContext 并发。但是您仍然可以使用异步方法来提高 .NET Core Web API 应用程序的性能。

于 2020-01-30T15:25:36.487 回答
0

async/await 模式仅间接连接到并行性。

我认为当您“等待”任务返回时,您首先需要准确了解正在发生的事情。在我看来,await-keyword 有点误导。它并没有真正等待函数返回,而是启动您在单独线程中调用的函数,将当前线程状态保存在状态引擎中,并使程序执行路径将控制权返回给调用者。一旦调用的函数完成,该状态引擎将重建线程状态并继续执行。

并行化任务实际上非常简单。无需“等待”函数返回,您只需获取函数返回的任务对象,将它们收集到集合中并调用 Task.WaitAll(collection)。之后,所有任务对象都将具有包含其结果的结果属性。

于 2020-01-30T15:40:11.983 回答