次のコードは、「非同期操作がまだ保留中に完了した非同期モジュールまたはハンドラ」を常に生成するのはなぜですか?非同期操作を使用する場合のEF IdentityDbContextの問題
私は「Dim OriginalUser As ApplicationUser = db.Users.Where(Function(p)p.Id = id).ToList(0)」を使用すると問題なく動作します。
IdentityDbContextから継承するApplicationDBContextでレイジーローディングが無効になります。 SaveChanges-PartでContextを使用できないのはなぜですか?私は何が欠けていますか?
Public Async Sub PatchUser(id As String, <FromBody> ChangedUserAttributes As Delta(Of ApplicationUser))
Using ctx As New ApplicationDbContext
Validate(ChangedUserAttributes.GetEntity())
If Not ModelState.IsValid Then
Throw New HttpResponseException(New HttpResponseMessage(HttpStatusCode.BadRequest))
End If
Dim OriginalUser As ApplicationUser = Await ctx.Users.SingleOrDefaultAsync(Function(p) p.Id = id)
If OriginalUser Is Nothing Then
Throw New HttpResponseException(HttpStatusCode.NotFound)
End If
Try
ChangedUserAttributes.TrySetPropertyValue("Email", "Emil")
ChangedUserAttributes.Patch(OriginalUser)
Await ctx.SaveChangesAsync
Return
Catch ex As Exception
Throw New HttpResponseException(New HttpResponseMessage(HttpStatusCode.BadRequest))
End Try
End Using
End Sub
コントローラのように見えるので、直接呼び出されることはありませんが、Async SubではなくAsync Function ... As Taskであることは間違いありません。 – jmcilhinney
ありがとうございました、それはすでに助けました。 Web APIのPATCHアクションでは、結果はMicrosoft(https://www.asp.net/web-api/overview/getting-started-with-aspnet-news)による204(No content) Web-API /アクション結果)。しかし、私がReturn New HttpResponseMessage(HttpStatusCode.NoContent)を返そうとすると、 '' System.Web.Http.IHttpActionResult 'というエラーをタイプするために' 'System.Net.Http.HttpResponseMessage'タイプのオブジェクトをキャストできません。 – user3767106
@ user3767106:*何かのタスクではなく、単純な 'Task'を返すべきです。 –