实体框架核心未添加记录

时间:2019-05-31 13:13:26

标签: c# entity-framework-core

我正在尝试使用Entity Framework Core添加一组记录。由于某种原因,我无法使记录实际保存到数据库中。

下面是正在运行的代码。没有抛出异常。

using (var context = new UserEntity.UsersContext())
{
    foreach(var u in users)
    {
        var tempUser = await context.User.FirstOrDefaultAsync(x => x.Username == u.Username);

        if (tempUser == null)
        {
            context.Add(u);
        }

        await context.SaveChangesAsync();
    }                
}

当我观看调试器时,程序在进入FirstOrDefaultAsync调用时停止运行。如果删除该记录,该程序将运行正常,但是SaveChangesAsync仍未真正将记录插入数据库。

有人可以建议吗?谢谢

编辑1:

await DataWork(smallList);

编辑2个决议!:

从这是一个控制台应用程序的事实来看,这完全是我的错,因为它将被使用一次,再也不会被看到。控制台应用程序上的main方法不能真正异步。

我的解决方案如下:

MyAsyncMethod().Wait();

就是这样。在此之后它可以工作。谢谢大家花时间尝试帮助我,这将我推向正确的方向

1 个答案:

答案 0 :(得分:0)

您当前正在混合异步和非 async 通话。当前,添加方法应为 AddAsync

如果要进行异步操作,则代码应为:

using (var context = new UserEntity.UsersContext())
        {
            foreach(var u in users)
            {
                var tempUser = await context.User.FirstOrDefaultAsync(x => x.Username == u.Username);
                if (tempUser == null)
                {
                    await context.AddAsync(u);
                }

                await context.SaveChangesAsync();
            }                
        }