Ваш способ проверки ввода очень хрупок. Вы исключаете любые возможные входные данные (для CustomerId в данном случае) и очищаете их, когда они запрашиваются. Это может работать в этом базовом сценарии, но во многих случаях вы не можете очистить входные данные. Вы в основном исправляете ошибки пользователя и делаете предположения о том, что он намеревался. Как вы будете делать это с почтовым адресом? Например, должен ли почтовый адрес «stevenhotmail.com» быть преобразован в «steven@hotmail.com» или «stevenhot@mail.com». Помимо этого, существует также возможность ошибки программирования. Хотели бы вы, чтобы ваша программа пыталась исправить ваши собственные ошибки программирования? Это даст вам головную боль. Или что вы будете делать, когда нужно сравнить два свойства одного и того же объекта?
Лучшим решением было бы позволить сущности перейти в недопустимое состояние и проверить ее действительность непосредственно перед сохранением в базе данных. Когда его состояние недопустимо, не пытайтесь автоматически исправить изменения, а просто скажите исключение или сообщите об ошибках пользователю.
Есть несколько подходов к этому. Например, вы можете реализовать метод IsValid()
для каждой сущности или использовать платформу проверки.