当前位置: 首页 > 知识库问答 >
问题:

在ASP.NET mvc5 web应用程序中编写异步存储库方法

宓茂才
2023-03-14
public class Repository
{
    private Entities t = newEntities();

    public async Task Save()
    {
        await t.SaveChangesAsync();
    }

我从以下操作方法调用它:

Repository repository = new Repository();
 public async Task<ActionResult> GetResourceByName(string resourcename)
      {
         await  repository.Save();
      }

那么这是正确的做法吗?正如我所做的:

>

  • 我将存储库方法定义为任务&也将动作方法定义为任务。那么我应该把它们都作为任务吗?

    //请注意,这只是存储库方法的一个简单示例,它只是用于保存模型,但我询问的是方法本身,因为我将在更复杂的存储库方法中使用此方法。

  • 共有1个答案

    田柏
    2023-03-14
    1. Q1:是的,两者都应该返回任务,这就是应该的,完全可以。
    2. Q2:是的,两者都应该有await(如果有更多的层,那么所有层中的所有函数调用都应该有await)。

    基本上:一旦您进入异步/等待,所有的调用链都应该是异步/等待的,以避免线程相关的问题...

    如果您不等待,那么它就被称为:“激发并忘记”,这是不推荐的,因为这样该请求将返回给用户成功消息,但在稍后的时间,您在没有等待的情况下进行的调用可能会失败并引发异常,而您将不知道该异常是什么...

     类似资料:
    • 使用laravel 7/livewire应用程序,我使用Repository制作crud,并获得了数据列表,在装载事件中,我分配了受保护的var$FacilityRepository,它在render方法中正常工作, 但在编辑方法中为空,我得到错误: 当用户单击“编辑链接”时 在模板中,编辑链接定义为: 为什么会出现错误以及如何修复? 修改#2: > 类设施扩展组件{...公共$FacilityR

    • 我正在尝试在从CrudRepository扩展的存储库接口上执行我试图在方法中使用存储库实现来执行此操作。当我运行以下代码时,线程在 UpdateTasksService List 中永久等待

    • 问题内容: 是否可以从另一个存储过程异步调用存储过程? 编辑: 具体地说,我正在使用DB2数据库。颅骨颅骨颅骨颅骨 问题答案: 摘要:是的,如果您的数据库具有消息队列服务。 您可以将消息推送到队列,队列处理器将异步使用它。 Oracle:队列 SQL Server:服务代理 DB2:事件代理 对于“纯”存储过程语言(PL / Sql或T-Sql),答案是否定的,因为它与大多数数据库具有的基本事务模

    • 问题内容: 我必须修改一个dropwizard应用程序以缩短其运行时间。基本上,此应用程序每天接收大约300万个URL,然后下载并解析它们以检测恶意内容。问题在于该应用程序只能处理100万个URL。当我查看该应用程序时,发现它正在进行许多顺序调用。我想对如何通过使其异步或其他技术来改进应用程序提出一些建议。 所需代码如下:- 我在考虑以下方法: 我直接通过调度程序调用,而不是通过POST调用dro

    • 所需代码如下:- 我在考虑以下方法:- > 不是通过POST调用dropwizard资源方法,而是直接从计划程序调用。 谢了。 编辑:我能想到两个瓶颈: 网页下载 将结果插入数据库(数据库位于另一个系统中) 似乎一次执行1个URL的处理

    • 问题内容: 在运行在node.js / Express上的开源应用程序中存储数据库配置(用户名,密码)的最佳方法是什么?两个具体问题: 例如,我是否应该将其放入文件夹中的单独config.js文件中,并且永远不要将其包含在GitHub上公开可用的主存储库中? 要包括配置,它是否像需要它的文件一样简单,或者有更好的方法呢? PS很抱歉,如果问题看起来有点简单或表达方式不够完善,但我才刚刚开始:) 问