Я имею дело с базой данных, которая содержит данные с несоответствиями, такими как пробелы в начале и в конце пробела.
В целом, я вижу, что многие разработчики практикуют защитное кодирование, обрезая почти все строки из базы данных, которые, возможно, были введены пользователем в какой-то момент. По моему мнению, лучше сделать такое форматирование до того, как данные сохранятся, так что это делается только один раз, и тогда данные могут быть в согласованном и надежном состоянии. К сожалению, это не тот случай, который приводит меня к следующему лучшему решению, использующему метод Trim .
Если я обрежу все данные как часть своего уровня доступа к данным, мне не придется заниматься защитной обрезкой внутри бизнес-объектов моего доменного уровня. Если вместо этого я возьму на себя ответственность за обрезку в моих бизнес-объектах, например, с помощью установленных аксессоров в моих свойствах C #, я получу те же чистые результаты, однако обрезка будет работать со всеми значениями, назначенными для свойств моих бизнес-объектов, а не только с из противоречивой базы данных.
Я полагаю, что это несколько философский вопрос, который может определить ответ, который я мог бы задать " Должен ли доменный уровень отвечать за защитное / принудительное форматирование данных? " Имеет ли смысл иметь установленный метод доступа для свойство PhoneNumber бизнес-объекта принимает неформатированную или отформатированную строку и затем пытается отформатировать ее по мере необходимости, или эта ответственность должна быть перенесена на уровни представления и доступа к данным, оставляя уровень домена более строгим в типе данных, которые он будет принимать? Я думаю, что это может быть более фундаментальный вопрос.
Обновление: Ниже приведено несколько ссылок, которыми я поделился с этой темой.
Шаблоны информационных услуг, Часть 3: Шаблон очистки данных
LINQ to SQL - отформатировать строку перед сохранением?
Как обрезать значения с помощью Linq to Sql?