我的
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
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;
}