Yet another reason for OptimisticVerificationException: Row not found exception in Sitefinity
Posted On Jan 20, 2017
You've probably seen it - the infamous OptimisticVerificationException: Row not found exception in Sitefinity.
In some of the older Sitefinity versions it was caused by a bug, later it was discovered it could be caused by the Data caching, but in my recent case (Sitefinity version 9.2) it was caused by something very simple: setting DateTime.MinDate to a DateTime field of a dynamic module type.
My scenario was this: I had a dynamic module type, built with Module Builder and one of the fields was of type DateTime.
I created an API that could Create/Update items of the above content type and that API can be consumed by external applications. So, the external applications would pass the needed parameters and my code would create/update the proper dynamic item - nothing too fancy.
The issue comes when the external program sends DateTime.MinDate (in C# terms) which corresponds to 01/01/0001 date.
When the code (or rather OpenAccess) tries to save this date in a field of type DateTime in Sitefinity you get the above OptimisticVerificationException exception. I bit misleading message, I know.
I can only assume that the underlying reason for this may be caused by the fact that SqlDateTime min value is 01/01/1753 which is much different from the C# DateTime.MinValue of 01/01/0001.
So, be aware when you work with dates in Sitefinity Dynamic Modules - always check if the date you are trying to save is bigger than the SqlDateTime.MinValue.