|
23.03.2009, 16:18 | #1 |
Участник
|
Проблема с регистрацией Image
CRM 4.0
Зарегистрировал плагин на PreUpdate сущности. Зарегистрировал PostImage с именем "EntityImage". В плагине проверяю есть ли Image: Код: if (context.PostEntityImages.Contains("EntityImage")) |
|
23.03.2009, 16:59 | #2 |
Участник
|
Блин, если перерегистрировать плагин на PostUpdate то Image находиться... я вообще перестаю что-либо понимать...
|
|
23.03.2009, 17:20 | #3 |
Участник
|
По-моему, очевидно, PostImage - это образ объекта ПОСЛЕ изменений.
PreUpdate срабатывает ДО изменений. Какой там может быть PostImage?? Или Вы хотите видеть будущее? |
|
23.03.2009, 23:30 | #4 |
Moderator
|
Вообще говоря, так и должно быть! Мы смотрим как было и что будет, и можем, в случае чего, помешать сохранить запись! Опять же это только с точки зрения здравого смысла. Колауты стали называть плагинами, но похоже мало что изменилось в самой логике приложения. В 3.0 в preAction был доступен только preImage и в 4.0, видимо тоже. Аналогий между ними так много, что я частенько поглядываю в SDK 3.0 чтобы прояснить для себя что искать в контексте, а чего там быть не может.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
24.03.2009, 14:54 | #5 |
Участник
|
Цитата:
PreUpdate нужен, например, чтобы не дать сохранить объект (или отдельные поля), пока он находится в определенном статусе. Другое дело, если нас не устраивает новое значение поля, то мы можем сделать что-то только в PostUpdate, да и то, только вручную. Никакого отката нет. Да, это неудобно. Кстати, нечто подобное обещают в CRM 5.0: http://dotnetdeveloper.co.uk/blogs/m...e/2009/02.aspx |
|
23.03.2009, 17:44 | #6 |
Участник
|
Нда... похоже на то... Просто я всегда наивно предполагал, что и на Pre и на Post стадии доступны и Pre и Post Image (ну за исключением конечно PreCreate).
|
|
24.03.2009, 15:43 | #7 |
Moderator
|
Глупости! Вам никто не мешает в preUpdate сделать Retrive запрос и посмотреть как выглядит снимок сущности в текущий момент. Я говорю лишь о том, что в ряде случаев было бы удобно получить именно набор изменений, а не прообраз конечного результата. В пре событии нам не важно навернется сам запрос или нет - наша цель: вычислить значения полей и проверить условия допустимости операции. Для этого не надо видеть будущего, достаточно знать прошлое.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
24.03.2009, 17:27 | #8 |
Участник
|
Цитата:
Цитата:
Цитата:
Она просто вызывает по очереди: PreUpdate -> Update -> PostUpdate Плюс на каждом этапе может сделать текущий снимок (образ) объекта, с которым работает. Чего-то большего от платформы хотеть сложно. |
|
24.03.2009, 20:01 | #9 |
Moderator
|
Такое ощущение, что мы спорим об одном и том же.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|