05.05.2011, 00:11 | #1 |
Участник
|
axdaily: Unit of Work
Источник: http://axdaily.blogspot.com/2011/05/unit-of-work.html
============== After the post about surrogate keys I was asked the following question: There is the following problem with using surrogate keys. A record gets RecId value at the moment it is inserted into the database. What if we are doing bulk insert of a journal with many lines and the journal header contains some totals calculated based on its lines. It is impossible to insert lines before header since the value of the journal's surrogate key is unknown. But that would be so convenient because otherwise the header should be inserted first, then the lines and then the header should be updated with the calculated totals. The answer is – use Unit of Work. It allows to perform create, update and delete operations without worrying about the order of those and without a need to specify surrogate key values. It will all be done automatically in the kernel! Example: Let we have the following tables: The following job will insert the journal header with calculated totals and 10 lines. Note, that there is no place where surrogate keys are mentioned in the code. Business data only. And here is the result. Some more details about the unit of work feature:
Источник: http://axdaily.blogspot.com/2011/05/unit-of-work.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
05.05.2011, 06:45 | #2 |
Участник
|
1. автор, появись, пожалуйста, дай тебе спасибов накидать.
2. э-э-э... колдунство какое-то. а откуда появился метод line.header()? Он где-то объявлен или в ядре сидит? если объявлен, то как? если в ядре, то он один такой? как я могу привязать line к нескольким структурам? |
|
05.05.2011, 08:00 | #3 |
Мрачный тип
|
Отличная штука !!!
Только вот сразу вопрос - данный класс способен только с парой таблиц или с большим числом работать ?
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
05.05.2011, 08:13 | #4 |
Участник
|
Цитата:
Цитата:
на relation появились свойства CreateNavigationPropertyMethods и NavigationPropertyMethodNameOvverride, которые видимо как раз и отвечают за создание навигационных методов Интересно всё это. Получается, что при таком подходе, процесс внесения изменения в БД скрыт от программиста и уже нельзя полагаться на то что требуемые операции будут выполнены в нужной последовательности. Нет оно и понятно, для этого UnitOfWork и предназначен. Просто непривычно мыслить не процедурно а декларативно. Последний раз редактировалось S.Kuskov; 05.05.2011 в 08:23. |
|
05.05.2011, 11:54 | #5 |
Участник
|
Цитата:
Сообщение от S.Kuskov
и судя по вот этому скриншоту Programmability Concepts
на relation появились свойства CreateNavigationPropertyMethods и NavigationPropertyMethodNameOvverride, которые видимо как раз и отвечают за создание навигационных методов с этими методами тоже много всего интересного. например, если их использовать на формах, то если соостветствующая запись была выбрана каким-нибудь датасорсом, то она будет использована. иначе будет запрос на чтение. довольно удобно. Цитата:
как я могу привязать line к нескольким структурам?
__________________
Blog: http://axdaily.blogspot.com Последний раз редактировалось gigz; 05.05.2011 в 11:57. |
|
|
За это сообщение автора поблагодарили: mazzy (5), Владимир Максимов (5). |