Now the library provides common exceptions like unique constraint or check constraint violations.
The idea is to scan a DB for all available constrains, generate specific exception classes for them with names like Unique{constraint_name}Violation using Roslyn code generation and map DBUpdateException to this concrete exceptions.
Then the code could become something like:
try
{
dbContext.SaveChanges();
}
catch UniqueEmailViolation e
{
...
}
Now the library provides common exceptions like unique constraint or check constraint violations. The idea is to scan a DB for all available constrains, generate specific exception classes for them with names like Unique{constraint_name}Violation using Roslyn code generation and map DBUpdateException to this concrete exceptions. Then the code could become something like: