C#在SaveChangesAsync

时间:2015-09-22 02:24:57

标签: c# .net sql-server entity-framework asynchronous

如果我写了一个(ms)SQL数据库并使用SaveChangesAsync()保存更改,那么未来对数据库的读取是否有可能读取未保存的更改?

因素可能包括是否使用不同的DbContext,线程或进程来访问数据库。

2 个答案:

答案 0 :(得分:3)

简答,NO(Tim P被误导)。

调用DbContext.SaveChangesAsync会在保存期间自动创建Transaction

这意味着如果任何其他线程试图访问该表,可能会发生许多事情之一。

通常,这意味着另一个数据库调用将阻塞另一个线程,而事务是uncommited / not-rollback。

答案 1 :(得分:1)

简短回答:是的。

这取决于几个因素,例如您保存到数据库的数量。如果您要保存1,000行/对象,并且它是一个速度慢的数据库服务器,则此时间窗口可能足够宽,以至于另一个线程正在读取(例如)行#879尚未保存。这与异步无关。这是处理多用户关系数据库系统时的常见并发问题。