我正在尝试使用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();
就是这样。在此之后它可以工作。谢谢大家花时间尝试帮助我,这将我推向正确的方向
答案 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();
}
}