context.SaveChanges()vs context.SaveChangesAsync()

时间:2017-03-13 04:03:27

标签: c# async-await entity-framework-core

我刚开始使用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()?我对异步的理解是正确的还是我错过了什么?

0 个答案:

没有答案