There are many articles about how to boost #ef_core performance and how to reduce the amount of resources is needed by ef core to do same work, But theory and reality are total two different worlds.
In @accent-design-group-ltd we came across a lack of memory during the processing of big data which included reading data from an #API, Validating that data, #Store it in #postregre, and Cache by #redis.
To fix that odd issue we decided to improve 2 main buttle necks of that process :
1- Ef core improvement (This article)
2- How is data being serialized to bytes to store in #Redis #cache
Let’s jump to practice and see what we did to boost ef core side and save memory alot
1-Untrack records changes in ef core
queryable.AsNoTrackingWithIdentityResolution();
2-Use Ef core 5 new feature to clear context, It will clear tracked entities during any CRUD transactions and save a bit of memory. Notice that it would depend on your use case, in some of the use cases it worth keeping tracked records
this.context.ChangeTracker.Clear()
3- Use another ef core 5 feature to bulk add asynchronously
DbSet.AddRangeAsync
Obviously, after untracked changes in ef core, some of the #integration_tests was broken, to overcome that you might need to include navigation properties or take care of entity states specially Many-to-Manies