Промяна на улавянето на данни Проследяване на всички промени в полета, въпреки че са зададени само за няколко полета в таблицата на Dynamics axe

Активирах прихващане на данни за промени за 5 полета в таблица, която има 10 полета за база данни Dynamics ax

В тези 5 полета, които съм модифицирал, е налично полето. Така че всеки път, когато променя поле в тези 10 полета, modifiedBy, ще се променят и то ще се проследява в таблиците на CDC. Но не искам да проследявам промените в таблиците на CDC, ако има промяна, направена в други 5 полета, които не се проследяват.

напр.: Таблица1

A B C D E F G H I J(MODIFIEDBY)
1 2 3 4 5 6 7 8 9 10
8 6 4 3 2 4 5 6 7 8

Проследявам G,H,I,J,F. Но J е modifiedBy поле, което се променя всеки път, когато правите промени в някое от деветте полета. Така че, ако направите промяна в поле A, J ще се актуализира, така че CDC да улови транзакцията. Което не искам да проследявам.

Можете ли да ми предложите някакво решение за това. Благодаря предварително.


person Raas    schedule 02.01.2015    source източник


Отговори (1)


Полето ModifiedBy се актуализира от системата всеки път, когато се актуализира запис, независимо кое поле е променено.

Така че трябва или:

  • спрете записването на данни на полето ModifiedBy

or:

  • създайте свое собствено поле, което се актуализира, когато се актуализират 5-те полета, да кажем SomeFieldsModifiedBy

Актуализацията на това поле е тривиална:

public void update()
{
    if (this.G != this.orig().G || this.H != this.orig().H || ...)
        this.SomeFieldsModifiedBy = curUserId();
    super();
}

Също така помислете за актуализиране на полето при вмъкване.

person Jan B. Kjeldsen    schedule 03.01.2015
comment
Здравейте, благодаря за отговора. Прав си, че можем да направим така. Но това е почти подобно на регистрирането в базата данни, което причинява известно натоварване на производителността. Планираме да намалим разходите за производителност на брадвата, така че това е причината да изберем CDC. Има ли други варианти????? - person Raas; 06.01.2015
comment
Можете да деактивирате свойството CreatedBy на таблицата. - person Jan B. Kjeldsen; 06.01.2015
comment
Здравей Ян, Благодаря за отговора. Приемам, че това е решението за постигане на това, което поисках. Но ние търсим други решения, различни от това. Тъй като това изглежда точно подобно на активирането на регистриране в базата данни в ax, което причинява излишни разходи за производителност. Имаме ли други решения освен създаване на ново поле и писане на код и актуализиране на това поле и проследяването му. - person Raas; 06.01.2015
comment
Не съм съгласен, че създаването на ново поле за специална цел прилича на регистриране в база данни. Освен това режийните разходи са пренебрежими. - person Jan B. Kjeldsen; 06.01.2015
comment
Благодаря за отговора, Януари. Всъщност имаме повече таблици, които трябва да направят това. Така че трябва да го направим във всички тези таблици. Тогава разбрах, че това е подобен начин, по който работи и записването в базата данни. Виждал съм много публикации, в които се казва, че регистрирането в базата данни е производителност. - person Raas; 08.01.2015
comment
Добавянето на поле не е подобно на регистрирането в базата данни. Остават ви двата варианта в отговора. - person Jan B. Kjeldsen; 08.01.2015
comment
Още веднъж ще тествам тези сценарии и ще актуализирам. Благодаря . - person Raas; 09.01.2015