无法解析构造函数'ValueTask(System.Threading.Tasks.Task<int>)

问题描述 投票:0回答:1

我的

SaveLogChangeInterceptors
继承自
SaveChangesInterceptor
,我想实现
SavingChangesAsync
。但是在这个方法中,我不确定如何返回
eventData.Context?.SaveChangesAsync(true, cancellationToken)
的结果。谁能帮我解决这个问题吗?

public class SaveLogChangeInterceptors : SaveChangesInterceptor
{
    

    public override ValueTask<InterceptionResult<int>> SavingChangesAsync(DbContextEventData eventData,
        InterceptionResult<int> result,
        CancellationToken cancellationToken = default)
    {
        // some code
        var interceptionResult = eventData.Context?.SaveChangesAsync(true, cancellationToken);

       return interceptionResult; // get error
    }
}

错误提示

无法转换表达式类型“System.Threading.Tasks.Task?”到 返回类型 'System.Threading.Tasks.ValueTask

c# entity-framework entity-framework-core
1个回答
0
投票

interceptionResult
不是这里的实际结果,它是
Task
,因为你还没有使用
await
。对于返回
Task
的函数,您无法返回
ValueTask

如果您想坚持使用

ValueTask
,最好的选择是使用
async
await
,如果您剩余的代码很复杂,您可能应该这样做。

public override async ValueTask<InterceptionResult<int>> SavingChangesAsync(DbContextEventData eventData,
    InterceptionResult<int> result,
    CancellationToken cancellationToken = default)
{
    // some code
    var interceptionResult = await eventData.Context?.SaveChangesAsync(true, cancellationToken);

   return interceptionResult;
}
© www.soinside.com 2019 - 2024. All rights reserved.