使用网络更新多条记录 api

Update multiple records using web api

今天面试的时候被问到这种问题

假设您想使用网络同时更新多条记录api,那么您该怎么做。

因为要更新大约 1000 条记录..

所以我回复暂时使用 async 和 await。

然后他问我如果用户 1 更新记录,同时用户 2 更新记录,那么哪个将采取行动以及这种情况如何处理。

那么这种问题应该怎么回答才好呢

Question: If user 1 update record and same time user 2 update record so which will take action and how this scenario can handle?

Its call "concurrency", To handle this kind so scneario you have to use locking mechanism for handling concurrency (updating same record from different user) so that user may understand that other user is modifying this as well.

Asp.net Entity Framework Aspect:

asp.net Entity frameworkRowVersion 属性 将跟踪特定数据的更新日志 什么时候更新。

您可以使用两种并发机制:

你可以看看official document 更多细节。另外here is the implementations

Database Aspect:

From database you can also handle this scenario. All the database also has Locking mechanism to work on same records simultaneously by multipole user. You can have a look here

希望它能为您提供相应的指导并消除您的困惑。

Entity framework 不是为批量更新而设计的 - 它是为查询和事务更新(一次几条记录)而设计的。

如果您需要批量更新数据,那么要么编写一个 SQL 语句来执行所有更新,要么使用 SSIS 等 ETL 工具。所以,raw SQL 比 Entity framework 快。话虽如此,对于不查询十亿行的普通 CRUD,EF 完全没问题,但在处理大量数据时,用存储过程替换 EF 调用是一个不错的选择。