为什么等待SaveChangesAsync()有时不设置插入实体的ID值?

问题描述 投票:0回答:1

我正在尝试将行添加到表中(它具有一个增量键ID)

Item it = new Item(){....};
using(var db = new MyDbContext())
{
   db.Items.Add(it);
   var r = await db.SaveChangesAsync();
}

我经常异步运行此操作。有时(很少)在代码的末尾有它。id == 0(因此未设置)r == 1(因此添加了1行)。检查数据库,我看到实际上已添加该行。有人可以帮助我了解为什么有时未设置密钥以及如何正确设置密钥吗?我从没有db.SaveChanges()同样的问题。谢谢

c# .net entity-framework async-await savechanges
1个回答
0
投票

这是因为SaveChangesAsync()不能保证立即保存,它是异步的,因此可以在单独的任务中执行它,稍后再返回到上下文,然后进行检查。当您检查它尚未执行时。

© www.soinside.com 2019 - 2024. All rights reserved.