如果我写了一个(ms)SQL数据库并使用SaveChangesAsync()保存更改,那么未来对数据库的读取是否有可能读取未保存的更改?
因素可能包括是否使用不同的DbContext,线程或进程来访问数据库。
答案 0 :(得分:3)
简答,NO(Tim P被误导)。
调用DbContext.SaveChangesAsync
会在保存期间自动创建Transaction
。
这意味着如果任何其他线程试图访问该表,可能会发生许多事情之一。
通常,这意味着另一个数据库调用将阻塞另一个线程,而事务是uncommited / not-rollback。
答案 1 :(得分:1)
简短回答:是的。
这取决于几个因素,例如您保存到数据库的数量。如果您要保存1,000行/对象,并且它是一个速度慢的数据库服务器,则此时间窗口可能足够宽,以至于另一个线程正在读取(例如)行#879尚未保存。这与异步无关。这是处理多用户关系数据库系统时的常见并发问题。