Monday, December 19, 2005

Уникальность атрибутов сущностей в ECO

Каждый, кто занимался разработкой приложений с помощью ECO задавался вопросом, а как же сделать какой-нибудь атрибут сущности уникальным. В модели нет такого свойства атрибута.
Ответ лежит на поверхности. Ограничения задаются с помощью OCL. Для этого достаточно описать constraint на самой сущности. Например, ограничение, проверяющее уникальность имени у Customer:

Customer.AllInstances->select(name.sqlLikeCaseinsensitive(self.name))->exсluding(self)->size=0

есть несколько моментов на которые надо обратить внимание.
1. Нужно не запутаться с применение Self
2. OCL выражение в ограничении должно возвращать тип boolean
3. Ограничение НЕ проверяется автоматически. Где и когда проверять ограничения - дело разработчика

No comments: