Я собираюсь эту статью MSDN известного эксперта DDD Уди Дахана , где он делает большое наблюдение, которое, как он сказал, потребовалось ему годы, чтобы понять; «Добавление всех адресов электронной почты в память, вероятно, приведет к тому, что полиция по производительности заблокирует вас. Даже если модель домена вызовет какую-либо службу, которая вызывает базу данных, чтобы выяснить, есть ли там адрес электронной почты, нет необходимости. Уникальное ограничение в базе данных будет достаточно. "
В презентации большого объекта, в которой описан некоторый сценарий добавления или редактирования, вы не включите действие Тип сохранения, пока все изменения не будут считаться действительными, поэтому первый компромисс, выполняющий вышеописанное, заключается в том, что вам нужно включить сохранение и подготовиться уведомить пользователя, если ограничение уникальности нарушено. Но как лучше всего это сделать, скажем, с помощью NHibernate?
Я полагаю, что он должен следовать строчкам псевдокода ниже. Кто-нибудь сейчас что-то делает в этом направлении?
Приветствия
Berryl
try {}
catch (GenericADOException)
{
// "Abort due to constraint violation\r\ncolumn {0} is not unique", columnName)
//(1) determine which db column violated uniqueness
//(2) potentially map the column name to something in context to the user
//(3) throw that can be translated into a BrokenRule for the UI presentation
//(4) reset the nhibernate session
}