我们首先使用实体框架代码将报表保存到SQL数据库中,许多对象具有多对多的关系,因此数据被分成不同的表。为了防止数据重复,我们首先检查某个对象是否已经保存,然后将关系添加到数据库中。
例如,具有可以具有多个国家的对象Person,以及可以持有多人对象的对象Country。
在储存流开始时,我们查询数据库中的现有国家,并在Person对象中更新它们(如果它们存在),或者创建它们(如果它们不存在)。
当我们同时只有一个保存过程时,这个流程工作得很好,但是现在我们需要同时支持它很多次,我担心的是一个线程会在其他线程检查现有国家之后立即添加一个新的国家。
我想知道有什么好的实践可以解决这个问题,并将对性能的影响降到最低。
谢谢!
发布于 2019-09-22 16:11:02
听起来你并没有充分利用你所选择的ORM的功能。如果您使用的是库according to it's documentation,则在返回的实体中表示关系。因此,只要EntityID
保持不变,更新单个实体的多对多关系就会更新所有其他相关实体。
如果您仍然无法信任这种关系的完整性,我建议您使用实体框架的bulk-update feature
https://stackoverflow.com/questions/58050792
复制相似问题