我们首先使用实体框架代码将报告保存到 SQL 数据库,许多对象具有多对多关系,因此数据被拆分到不同的表中。 为了防止数据重复,我们首先检查某个对象是否已经保存,然后我们将关系添加到数据库。
例如有对象 Person 可以有多个国家,对象 Country 可以容纳多个 Person 对象。
在保存流程开始时,我们查询现有国家的数据库,如果存在则在 Person 对象中更新它们,如果不存在则创建它们。
这个流程在我们同时只有一个保存过程时运行良好,但现在我们需要同时支持它很多次,我担心一个线程会在另一个线程检查现有国家之后立即添加一个新国家。
我想知道有哪些好的做法可以在对性能影响最小的情况下解决这个问题。
谢谢!
最佳答案
听起来您并没有充分利用所选 ORM 的功能。如果您使用库 according to it's documentation,关系将在您返回的实体中表示.因此,只要 EntityID
保持不变,更新单个实体的多对多关系就会更新所有其他相关实体。
如果您仍然无法相信这种关系的完整性,我建议您使用 bulk-update feature Entity Framework
关于c# - 如何在长逻辑流中保持数据库并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58050792/