我刚开始使用EF Core并注意到他们现在已经拥有了所有类型的XXXAsync方法。我开始使用它们并使用context.SaveChnagesAsync()在执行简单的基本插入操作时击中岩石。它是这样的:
public async void SaveUserAsync(User user)
{
using (var context = GetContextTransient())
{
Model.User contextUser = new Model.User
{
EmailId = user.EmailId,
UserName = user.UserName,
JoinedDateTime = DateTime.Now
};
await context.User.AddAsync(contextUser).ConfigureAwait(false);
await context.SaveChangesAsync(true).ConfigureAwait(false);
}
}
上面的实现没有向数据库中插入任何记录,但如下所示进行简单的更改,然后就可以了:
public async Task<int> SaveUserAsync(User user)
{
using (var context = GetContextTransient())
{
Model.User contextUser = new Model.User
{
EmailId = user.EmailId,
UserName = user.UserName,
JoinedDateTime = DateTime.Now
};
await context.User.AddAsync(contextUser).ConfigureAwait(false);
int result = await context.SaveChangesAsync(true).ConfigureAwait(false);
return result;
}
}
现在我知道不建议做 aysnc - await with void return type 但是仍然不应该第一次实现工作,因为我正在等待context.SaveChangesAsync()?我对异步的理解是正确的还是我错过了什么?