我有一个每隔几秒就会调用一次的网络服务,它会做很多事情,然后执行一个批量插入,目前平均需要半秒来调用 SaveChanges()。我想异步保存所有更改,因为这样我可以每秒多次调用我的 Web 服务,并且只需缓冲要由石英计时器保存的任何数据库更改,这应该会带来更好的性能。
我观察到,在执行 Web 服务函数后,如果没有在实体数据库模型对象上调用“SaveChanges”,则任何挂起的数据库更改都将被回滚。
我是否可以将我的更改异步保存到数据库中,我将如何去做?
我有一个每隔几秒就会调用一次的网络服务,它会做很多事情,然后执行一个批量插入,目前平均需要半秒来调用 SaveChanges()。我想异步保存所有更改,因为这样我可以每秒多次调用我的 Web 服务,并且只需缓冲要由石英计时器保存的任何数据库更改,这应该会带来更好的性能。
我观察到,在执行 Web 服务函数后,如果没有在实体数据库模型对象上调用“SaveChanges”,则任何挂起的数据库更改都将被回滚。
我是否可以将我的更改异步保存到数据库中,我将如何去做?
原则上,您可以为此目的使用 .NET 中可用的任何异步方法。如果您可以使用 .NET 4.5,那么我建议您查看 async/await 方法,因为它们非常易于使用。实体框架不支持开箱即用的异步/等待,但您可以使用TaskCompletionSource类添加简单的包装器。