Je vais bien this msdn article by noted DDD expert Udi Dahan, où il fait une grande observation qu'il a dit lui a pris des années à réaliser; "Ramener toutes les adresses e-mail dans la mémoire vous verrouillera probablement par la police des performances.Même si le modèle de domaine appelle un service, qui appelle la base de données, pour voir si l'adresse e-mail est là n'est pas nécessaire. dans la base de données suffirait. " Dans une présentation LOB qui a capturé un scénario d'ajout ou de modification, vous n'activez pas l'action Enregistrer le type tant que toutes les modifications n'ont pas été considérées comme valides. Le premier compromis à faire est donc que vous devez activer Enregistrer et modifier. préparé pour notifier l'utilisateur si la contrainte d'unicité est violée. Mais comment faire mieux, disons avec NHibernate? Je pense qu'il faut suivre les lignes du pseudo-code ci-dessous. Quelqu'un fait-il quelque chose dans ce sens maintenant?en utilisant le DB pour éviter les erreurs dans une présentation de l'interface utilisateur
Cheers,
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
}
fyi il y a probablement une exception plus spécifique qui se produira lorsqu'une contrainte unique est brisée. –