具有Entity Framework核心的Blazor Server,如何异步调用数据库方法

时间:2020-05-11 05:15:32

标签: asp.net-core-3.1 ef-core-3.1

我使用ASP.net核心3.1和Entity Framework核心创建Balzor服务器应用程序。 问题在于,由于Db调用需要一段时间才能取回记录,并且EF内核中没有内置异步功能,因此我决定在页面加载几秒钟后延迟拉行。 但是问题是代码运行后我的HTML不会更新。 没有任务延迟,我可以看到数据。为什么不更新我的UI / HTML?

HTML

@if (_allRequestForHelp.Count > 0)
{
   @foreach (var item in _allRequestForHelp)
    {

   }
}



protected override void OnInitialized()
    {

        telemetryClient.TrackPageView("RegisterForHelp");

       // want to run this async other page hangs until the data comesback
        Task.Delay(2000).ContinueWith(t => loadPreviousRequestForHelps());

        base.OnInitialized();
    }



private async Task loadPreviousRequestForHelps()
    {

            if (appStateInfo.IsAuthenticated)
            {
                _allRequestForHelp =  (from b in dbContext.RequestHelp where b.UserID.ToString() == appStateInfo.UserID orderby b.UTCDateCreated descending select b).ToList();
                StateHasChanged();

            }
    }

1 个答案:

答案 0 :(得分:0)

我使用了异步版本OnInitialized

受保护的异步覆盖任务OnInitializedAsync()

其他所有内容都保持不变,并且现在可以正常使用