Performance

Posts   
 
    
Posts: 20
Joined: 27-Jun-2011
# Posted on: 23-Aug-2011 07:46:03   

Hi I'm using llblgen pro to update our application from an isam database to SQL. I have written a generic interface at this stage which mimics the old isam routines, whilst we transition.

I am looking for some guidance on how best to write update loops.

For instance.

In our current software we might have a loop that does an update on a bunch of selected records. It might look something like this

   result = SelectRecord(selct conditions);
   while (result) {
           ReadRow
           UpdateRow
           SaveRow

           result = NextRecord();
   }

Whilst this works, the performance seems to be ordinary. I could see that the updates could probably be done as a single update query posted to the SQL server

      update table where (selct conditions)

But this seems to defeat the whole purpose of llblgen.

How do people use llblgen in this scenario.

Regards

Walaa avatar
Walaa
Support Team
Posts: 14995
Joined: 21-Aug-2005
# Posted on: 23-Aug-2011 08:05:14   

It depends on how do you want to update these records.

If you can write one SQL query to Update them, then you can use one call from LLBLGen to execute such query.

e.g. UPDATE Orders SET Discount = 0

Else you may fetch the etities updates them one by one in memory, then save the entire collection at one shot. Internally this executes one database Update command for each entity, but executes them all within one transaction.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39908
Joined: 17-Aug-2003
# Posted on: 23-Aug-2011 09:17:14   

Try to see whether you can write the updates as expressions, then use 'update entities directly' feature (which generates 1 query out of a specific entity to update multiple rows), see the entity sections in the manual for details.

Frans Bouma | Lead developer LLBLGen Pro
Posts: 20
Joined: 27-Jun-2011
# Posted on: 23-Aug-2011 13:28:52   

Otis wrote:

Try to see whether you can write the updates as expressions, then use 'update entities directly' feature (which generates 1 query out of a specific entity to update multiple rows), see the entity sections in the manual for details.

I am working on a couple of examples. One thing I found was to use the includeexclude list so that I would have thought the select would reduce down to just the fields I want. However the select still seems to select every record. It just only includes certain fields in the fields list. Is this as it should be?

Below is the select I get even though I just asked for three fields

SELECT [msa29d].[dbo].[usermas].[userid_accessrego] AS [Userid_accessrego], [msa29d].[dbo].[usermas].[userid_additem] AS [Userid_additem], [msa29d].[dbo].[usermas].[userid_adjwip] AS [Userid_adjwip], [msa29d].[dbo].[usermas].[userid_allowadj] AS [Userid_allowadj], [msa29d].[dbo].[usermas].[userid_allowmain] AS [Userid_allowmain], [msa29d].[dbo].[usermas].[userid_amendjob] AS [Userid_amendjob], [msa29d].[dbo].[usermas].[userid_amendorder] AS [Userid_amendorder], [msa29d].[dbo].[usermas].[userid_autoconnect] AS [Userid_autoconnect], [msa29d].[dbo].[usermas].[userid_autoindex] AS [Userid_autoindex], [msa29d].[dbo].[usermas].[userid_benchonly] AS [Userid_benchonly], [msa29d].[dbo].[usermas].[userid_boxpsid] AS [Userid_boxpsid], [msa29d].[dbo].[usermas].[userid_cdraw] AS [Userid_cdraw], [msa29d].[dbo].[usermas].[userid_changedep] AS [Userid_changedep], [msa29d].[dbo].[usermas].[userid_changeper] AS [Userid_changeper], [msa29d].[dbo].[usermas].[userid_changeppayinv] AS [Userid_changeppayinv], [msa29d].[dbo].[usermas].[userid_changesch] AS [Userid_changesch], [msa29d].[dbo].[usermas].[userid_changesman] AS [Userid_changesman], [msa29d].[dbo].[usermas].[userid_chgbin] AS [Userid_chgbin], [msa29d].[dbo].[usermas].[userid_chqpsid] AS [Userid_chqpsid], [msa29d].[dbo].[usermas].[userid_cnpsid] AS [Userid_cnpsid], [msa29d].[dbo].[usermas].[userid_coilyeild] AS [Userid_coilyeild], [msa29d].[dbo].[usermas].[userid_compid] AS [Userid_compid], [msa29d].[dbo].[usermas].[userid_costch] AS [Userid_costch], [msa29d].[dbo].[usermas].[userid_courpsid] AS [Userid_courpsid], [msa29d].[dbo].[usermas].[userid_created] AS [Userid_created], [msa29d].[dbo].[usermas].[userid_createponrep] AS [Userid_createponrep], [msa29d].[dbo].[usermas].[userid_createporep] AS [Userid_createporep], [msa29d].[dbo].[usermas].[userid_credit] AS [Userid_credit], [msa29d].[dbo].[usermas].[userid_creditnotelmt] AS [Userid_creditnotelmt], [msa29d].[dbo].[usermas].[userid_datefmt] AS [Userid_datefmt], [msa29d].[dbo].[usermas].[userid_dbttxt] AS [Userid_dbttxt], [msa29d].[dbo].[usermas].[userid_debtadradr] AS [Userid_debtadradr], [msa29d].[dbo].[usermas].[userid_defdelopt] AS [Userid_defdelopt], [msa29d].[dbo].[usermas].[userid_defproopt] AS [Userid_defproopt], [msa29d].[dbo].[usermas].[userid_del] AS [Userid_del], [msa29d].[dbo].[usermas].[userid_delcoil] AS [Userid_delcoil], [msa29d].[dbo].[usermas].[userid_deljob] AS [Userid_deljob], [msa29d].[dbo].[usermas].[userid_delorder] AS [Userid_delorder], [msa29d].[dbo].[usermas].[userid_delpslip] AS [Userid_delpslip], [msa29d].[dbo].[usermas].[userid_delquote] AS [Userid_delquote], [msa29d].[dbo].[usermas].[userid_disablecrdgr] AS [Userid_disablecrdgr], [msa29d].[dbo].[usermas].[userid_disablecredit] AS [Userid_disablecredit], [msa29d].[dbo].[usermas].[userid_disc] AS [Userid_disc], [msa29d].[dbo].[usermas].[userid_editafter] AS [Userid_editafter], [msa29d].[dbo].[usermas].[userid_editbefore] AS [Userid_editbefore], [msa29d].[dbo].[usermas].[userid_editinv] AS [Userid_editinv], [msa29d].[dbo].[usermas].[userid_editwo] AS [Userid_editwo], [msa29d].[dbo].[usermas].[userid_eftpos] AS [Userid_eftpos], [msa29d].[dbo].[usermas].[userid_email] AS [Userid_email], [msa29d].[dbo].[usermas].[userid_empid] AS [Userid_empid], [msa29d].[dbo].[usermas].[userid_enposhwhouse] AS [Userid_enposhwhouse], [msa29d].[dbo].[usermas].[userid_enposlwhouse] AS [Userid_enposlwhouse], [msa29d].[dbo].[usermas].[userid_finalisejob] AS [Userid_finalisejob], [msa29d].[dbo].[usermas].[userid_finorder] AS [Userid_finorder], [msa29d].[dbo].[usermas].[userid_gp] AS [Userid_gp], [msa29d].[dbo].[usermas].[userid_grnoinv] AS [Userid_grnoinv], [msa29d].[dbo].[usermas].[userid_hidesecurityw] AS [Userid_hidesecurityw], [msa29d].[dbo].[usermas].[userid_hold] AS [Userid_hold], [msa29d].[dbo].[usermas].[userid_holdquote] AS [Userid_holdquote], [msa29d].[dbo].[usermas].[userid_id] AS [Userid_id], [msa29d].[dbo].[usermas].[userid_incapononrep] AS [Userid_incapononrep], [msa29d].[dbo].[usermas].[userid_index0] AS [Userid_index0], [msa29d].[dbo].[usermas].[userid_index1] AS [Userid_index1], [msa29d].[dbo].[usermas].[userid_index10] AS [Userid_index10], [msa29d].[dbo].[usermas].[userid_index11] AS [Userid_index11], [msa29d].[dbo].[usermas].[userid_index12] AS [Userid_index12], [msa29d].[dbo].[usermas].[userid_index13] AS [Userid_index13], [msa29d].[dbo].[usermas].[userid_index14] AS [Userid_index14], [msa29d].[dbo].[usermas].[userid_index15] AS [Userid_index15], [msa29d].[dbo].[usermas].[userid_index16] AS [Userid_index16], [msa29d].[dbo].[usermas].[userid_index17] AS [Userid_index17], [msa29d].[dbo].[usermas].[userid_index18] AS [Userid_index18], [msa29d].[dbo].[usermas].[userid_index19] AS [Userid_index19], [msa29d].[dbo].[usermas].[userid_index2] AS [Userid_index2], [msa29d].[dbo].[usermas].[userid_index3] AS [Userid_index3], [msa29d].[dbo].[usermas].[userid_index4] AS [Userid_index4], [msa29d].[dbo].[usermas].[userid_index5] AS [Userid_index5], [msa29d].[dbo].[usermas].[userid_index6] AS [Userid_index6], [msa29d].[dbo].[usermas].[userid_index7] AS [Userid_index7], [msa29d].[dbo].[usermas].[userid_index8] AS [Userid_index8], [msa29d].[dbo].[usermas].[userid_index9] AS [Userid_index9], [msa29d].[dbo].[usermas].[userid_invdef] AS [Userid_invdef], [msa29d].[dbo].[usermas].[userid_invpsid] AS [Userid_invpsid], [msa29d].[dbo].[usermas].[userid_ipdapackage0] AS [Userid_ipdapackage0], [msa29d].[dbo].[usermas].[userid_ipdapackage1] AS [Userid_ipdapackage1], [msa29d].[dbo].[usermas].[userid_ipdapackage10] AS [Userid_ipdapackage10], [msa29d].[dbo].[usermas].[userid_ipdapackage11] AS [Userid_ipdapackage11], [msa29d].[dbo].[usermas].[userid_ipdapackage12] AS [Userid_ipdapackage12], [msa29d].[dbo].[usermas].[userid_ipdapackage13] AS [Userid_ipdapackage13], [msa29d].[dbo].[usermas].[userid_ipdapackage14] AS [Userid_ipdapackage14], [msa29d].[dbo].[usermas].[userid_ipdapackage15] AS [Userid_ipdapackage15], [msa29d].[dbo].[usermas].[userid_ipdapackage16] AS [Userid_ipdapackage16], [msa29d].[dbo].[usermas].[userid_ipdapackage17] AS [Userid_ipdapackage17], [msa29d].[dbo].[usermas].[userid_ipdapackage18] AS [Userid_ipdapackage18], [msa29d].[dbo].[usermas].[userid_ipdapackage19] AS [Userid_ipdapackage19], [msa29d].[dbo].[usermas].[userid_ipdapackage2] AS [Userid_ipdapackage2], [msa29d].[dbo].[usermas].[userid_ipdapackage3] AS [Userid_ipdapackage3], [msa29d].[dbo].[usermas].[userid_ipdapackage4] AS [Userid_ipdapackage4], [msa29d].[dbo].[usermas].[userid_ipdapackage5] AS [Userid_ipdapackage5], [msa29d].[dbo].[usermas].[userid_ipdapackage6] AS [Userid_ipdapackage6], [msa29d].[dbo].[usermas].[userid_ipdapackage7] AS [Userid_ipdapackage7], [msa29d].[dbo].[usermas].[userid_ipdapackage8] AS [Userid_ipdapackage8], [msa29d].[dbo].[usermas].[userid_ipdapackage9] AS [Userid_ipdapackage9], [msa29d].[dbo].[usermas].[userid_jobpda] AS [Userid_jobpda], [msa29d].[dbo].[usermas].[userid_jobsch] AS [Userid_jobsch], [msa29d].[dbo].[usermas].[userid_lastname] AS [Userid_lastname], [msa29d].[dbo].[usermas].[userid_locksumm] AS [Userid_locksumm], [msa29d].[dbo].[usermas].[userid_locktemp] AS [Userid_locktemp], [msa29d].[dbo].[usermas].[userid_lowerprice] AS [Userid_lowerprice], [msa29d].[dbo].[usermas].[userid_lowgp] AS [Userid_lowgp], [msa29d].[dbo].[usermas].[userid_maintord] AS [Userid_maintord], [msa29d].[dbo].[usermas].[userid_menu0] AS [Userid_menu0], [msa29d].[dbo].[usermas].[userid_menu1] AS [Userid_menu1], [msa29d].[dbo].[usermas].[userid_menu10] AS [Userid_menu10], [msa29d].[dbo].[usermas].[userid_menu11] AS [Userid_menu11], [msa29d].[dbo].[usermas].[userid_menu12] AS [Userid_menu12], [msa29d].[dbo].[usermas].[userid_menu13] AS [Userid_menu13], [msa29d].[dbo].[usermas].[userid_menu14] AS [Userid_menu14], [msa29d].[dbo].[usermas].[userid_menu15] AS [Userid_menu15], [msa29d].[dbo].[usermas].[userid_menu16] AS [Userid_menu16], [msa29d].[dbo].[usermas].[userid_menu17] AS [Userid_menu17], [msa29d].[dbo].[usermas].[userid_menu18] AS [Userid_menu18], [msa29d].[dbo].[usermas].[userid_menu19] AS [Userid_menu19], [msa29d].[dbo].[usermas].[userid_menu2] AS [Userid_menu2], [msa29d].[dbo].[usermas].[userid_menu3] AS [Userid_menu3], [msa29d].[dbo].[usermas].[userid_menu4] AS [Userid_menu4], [msa29d].[dbo].[usermas].[userid_menu5] AS [Userid_menu5], [msa29d].[dbo].[usermas].[userid_menu6] AS [Userid_menu6], [msa29d].[dbo].[usermas].[userid_menu7] AS [Userid_menu7], [msa29d].[dbo].[usermas].[userid_menu8] AS [Userid_menu8], [msa29d].[dbo].[usermas].[userid_menu9] AS [Userid_menu9], [msa29d].[dbo].[usermas].[userid_mobile] AS [Userid_mobile], [msa29d].[dbo].[usermas].[userid_modified] AS [Userid_modified], [msa29d].[dbo].[usermas].[userid_name] AS [Userid_name], [msa29d].[dbo].[usermas].[userid_no] AS [Userid_no], [msa29d].[dbo].[usermas].[userid_nobo] AS [Userid_nobo], [msa29d].[dbo].[usermas].[userid_nodays] AS [Userid_nodays], [msa29d].[dbo].[usermas].[userid_noloc] AS [Userid_noloc], [msa29d].[dbo].[usermas].[userid_odbc] AS [Userid_odbc], [msa29d].[dbo].[usermas].[userid_ospurch] AS [Userid_ospurch], [msa29d].[dbo].[usermas].[userid_overoffcut] AS [Userid_overoffcut], [msa29d].[dbo].[usermas].[userid_overprice] AS [Userid_overprice], [msa29d].[dbo].[usermas].[userid_oversdisc] AS [Userid_oversdisc], [msa29d].[dbo].[usermas].[userid_oversdiscone] AS [Userid_oversdiscone], [msa29d].[dbo].[usermas].[userid_oversos] AS [Userid_oversos], [msa29d].[dbo].[usermas].[userid_overstocked] AS [Userid_overstocked], [msa29d].[dbo].[usermas].[userid_overwaste] AS [Userid_overwaste], [msa29d].[dbo].[usermas].[userid_ovrcoil] AS [Userid_ovrcoil], [msa29d].[dbo].[usermas].[userid_ovrpocredlim] AS [Userid_ovrpocredlim], [msa29d].[dbo].[usermas].[userid_package0] AS [Userid_package0], [msa29d].[dbo].[usermas].[userid_package1] AS [Userid_package1], [msa29d].[dbo].[usermas].[userid_package10] AS [Userid_package10], [msa29d].[dbo].[usermas].[userid_package11] AS [Userid_package11], [msa29d].[dbo].[usermas].[userid_package12] AS [Userid_package12], [msa29d].[dbo].[usermas].[userid_package13] AS [Userid_package13], [msa29d].[dbo].[usermas].[userid_package14] AS [Userid_package14], [msa29d].[dbo].[usermas].[userid_package15] AS [Userid_package15], [msa29d].[dbo].[usermas].[userid_package16] AS [Userid_package16], [msa29d].[dbo].[usermas].[userid_package17] AS [Userid_package17], [msa29d].[dbo].[usermas].[userid_package18] AS [Userid_package18], [msa29d].[dbo].[usermas].[userid_package19] AS [Userid_package19], [msa29d].[dbo].[usermas].[userid_package2] AS [Userid_package2], [msa29d].[dbo].[usermas].[userid_package20] AS [Userid_package20], [msa29d].[dbo].[usermas].[userid_package21] AS [Userid_package21], [msa29d].[dbo].[usermas].[userid_package22] AS [Userid_package22], [msa29d].[dbo].[usermas].[userid_package23] AS [Userid_package23], [msa29d].[dbo].[usermas].[userid_package24] AS [Userid_package24], [msa29d].[dbo].[usermas].[userid_package25] AS [Userid_package25], [msa29d].[dbo].[usermas].[userid_package26] AS [Userid_package26], [msa29d].[dbo].[usermas].[userid_package27] AS [Userid_package27], [msa29d].[dbo].[usermas].[userid_package28] AS [Userid_package28], [msa29d].[dbo].[usermas].[userid_package29] AS [Userid_package29], [msa29d].[dbo].[usermas].[userid_package3] AS [Userid_package3], [msa29d].[dbo].[usermas].[userid_package30] AS [Userid_package30], [msa29d].[dbo].[usermas].[userid_package31] AS [Userid_package31], [msa29d].[dbo].[usermas].[userid_package32] AS [Userid_package32], [msa29d].[dbo].[usermas].[userid_package33] AS [Userid_package33], [msa29d].[dbo].[usermas].[userid_package34] AS [Userid_package34], [msa29d].[dbo].[usermas].[userid_package35] AS [Userid_package35], [msa29d].[dbo].[usermas].[userid_package36] AS [Userid_package36], [msa29d].[dbo].[usermas].[userid_package37] AS [Userid_package37], [msa29d].[dbo].[usermas].[userid_package38] AS [Userid_package38], [msa29d].[dbo].[usermas].[userid_package39] AS [Userid_package39], [msa29d].[dbo].[usermas].[userid_package4] AS [Userid_package4], [msa29d].[dbo].[usermas].[userid_package5] AS [Userid_package5], [msa29d].[dbo].[usermas].[userid_package6] AS [Userid_package6], [msa29d].[dbo].[usermas].[userid_package7] AS [Userid_package7], [msa29d].[dbo].[usermas].[userid_package8] AS [Userid_package8], [msa29d].[dbo].[usermas].[userid_package9] AS [Userid_package9], [msa29d].[dbo].[usermas].[userid_password] AS [Userid_password], [msa29d].[dbo].[usermas].[userid_pdadefmenu] AS [Userid_pdadefmenu], [msa29d].[dbo].[usermas].[userid_pdapackage0] AS [Userid_pdapackage0], [msa29d].[dbo].[usermas].[userid_pdapackage1] AS [Userid_pdapackage1], [msa29d].[dbo].[usermas].[userid_pdapackage10] AS [Userid_pdapackage10], [msa29d].[dbo].[usermas].[userid_pdapackage11] AS [Userid_pdapackage11], [msa29d].[dbo].[usermas].[userid_pdapackage12] AS [Userid_pdapackage12], [msa29d].[dbo].[usermas].[userid_pdapackage13] AS [Userid_pdapackage13], [msa29d].[dbo].[usermas].[userid_pdapackage14] AS [Userid_pdapackage14], [msa29d].[dbo].[usermas].[userid_pdapackage15] AS [Userid_pdapackage15], [msa29d].[dbo].[usermas].[userid_pdapackage16] AS [Userid_pdapackage16], [msa29d].[dbo].[usermas].[userid_pdapackage17] AS [Userid_pdapackage17], [msa29d].[dbo].[usermas].[userid_pdapackage18] AS [Userid_pdapackage18], [msa29d].[dbo].[usermas].[userid_pdapackage19] AS [Userid_pdapackage19], [msa29d].[dbo].[usermas].[userid_pdapackage2] AS [Userid_pdapackage2], [msa29d].[dbo].[usermas].[userid_pdapackage20] AS [Userid_pdapackage20], [msa29d].[dbo].[usermas].[userid_pdapackage21] AS [Userid_pdapackage21], [msa29d].[dbo].[usermas].[userid_pdapackage22] AS [Userid_pdapackage22], [msa29d].[dbo].[usermas].[userid_pdapackage23] AS [Userid_pdapackage23], [msa29d].[dbo].[usermas].[userid_pdapackage24] AS [Userid_pdapackage24], [msa29d].[dbo].[usermas].[userid_pdapackage25] AS [Userid_pdapackage25], [msa29d].[dbo].[usermas].[userid_pdapackage26] AS [Userid_pdapackage26], [msa29d].[dbo].[usermas].[userid_pdapackage27] AS [Userid_pdapackage27], [msa29d].[dbo].[usermas].[userid_pdapackage28] AS [Userid_pdapackage28], [msa29d].[dbo].[usermas].[userid_pdapackage29] AS [Userid_pdapackage29], [msa29d].[dbo].[usermas].[userid_pdapackage3] AS [Userid_pdapackage3], [msa29d].[dbo].[usermas].[userid_pdapackage30] AS [Userid_pdapackage30], [msa29d].[dbo].[usermas].[userid_pdapackage31] AS [Userid_pdapackage31], [msa29d].[dbo].[usermas].[userid_pdapackage32] AS [Userid_pdapackage32], [msa29d].[dbo].[usermas].[userid_pdapackage33] AS [Userid_pdapackage33], [msa29d].[dbo].[usermas].[userid_pdapackage34] AS [Userid_pdapackage34], [msa29d].[dbo].[usermas].[userid_pdapackage35] AS [Userid_pdapackage35], [msa29d].[dbo].[usermas].[userid_pdapackage36] AS [Userid_pdapackage36], [msa29d].[dbo].[usermas].[userid_pdapackage37] AS [Userid_pdapackage37], [msa29d].[dbo].[usermas].[userid_pdapackage38] AS [Userid_pdapackage38], [msa29d].[dbo].[usermas].[userid_pdapackage39] AS [Userid_pdapackage39], [msa29d].[dbo].[usermas].[userid_pdapackage4] AS [Userid_pdapackage4], [msa29d].[dbo].[usermas].[userid_pdapackage40] AS [Userid_pdapackage40], [msa29d].[dbo].[usermas].[userid_pdapackage41] AS [Userid_pdapackage41], [msa29d].[dbo].[usermas].[userid_pdapackage42] AS [Userid_pdapackage42], [msa29d].[dbo].[usermas].[userid_pdapackage43] AS [Userid_pdapackage43], [msa29d].[dbo].[usermas].[userid_pdapackage44] AS [Userid_pdapackage44], [msa29d].[dbo].[usermas].[userid_pdapackage45] AS [Userid_pdapackage45], [msa29d].[dbo].[usermas].[userid_pdapackage46] AS [Userid_pdapackage46], [msa29d].[dbo].[usermas].[userid_pdapackage47] AS [Userid_pdapackage47], [msa29d].[dbo].[usermas].[userid_pdapackage48] AS [Userid_pdapackage48], [msa29d].[dbo].[usermas].[userid_pdapackage49] AS [Userid_pdapackage49], [msa29d].[dbo].[usermas].[userid_pdapackage5] AS [Userid_pdapackage5], [msa29d].[dbo].[usermas].[userid_pdapackage6] AS [Userid_pdapackage6], [msa29d].[dbo].[usermas].[userid_pdapackage7] AS [Userid_pdapackage7], [msa29d].[dbo].[usermas].[userid_pdapackage8] AS [Userid_pdapackage8], [msa29d].[dbo].[usermas].[userid_pdapackage9] AS [Userid_pdapackage9], [msa29d].[dbo].[usermas].[userid_phone] AS [Userid_phone], [msa29d].[dbo].[usermas].[userid_picker] AS [Userid_picker], [msa29d].[dbo].[usermas].[userid_pop3] AS [Userid_pop3], [msa29d].[dbo].[usermas].[userid_popsid] AS [Userid_popsid], [msa29d].[dbo].[usermas].[userid_position] AS [Userid_position], [msa29d].[dbo].[usermas].[userid_price] AS [Userid_price], [msa29d].[dbo].[usermas].[userid_pricech] AS [Userid_pricech], [msa29d].[dbo].[usermas].[userid_profile] AS [Userid_profile], [msa29d].[dbo].[usermas].[userid_pslippsid] AS [Userid_pslippsid], [msa29d].[dbo].[usermas].[userid_regid] AS [Userid_regid], [msa29d].[dbo].[usermas].[userid_rempsid] AS [Userid_rempsid], [msa29d].[dbo].[usermas].[userid_reppsid] AS [Userid_reppsid], [msa29d].[dbo].[usermas].[userid_showcost] AS [Userid_showcost], [msa29d].[dbo].[usermas].[userid_smanid] AS [Userid_smanid], [msa29d].[dbo].[usermas].[userid_smtp] AS [Userid_smtp], [msa29d].[dbo].[usermas].[userid_stkware] AS [Userid_stkware], [msa29d].[dbo].[usermas].[userid_stockneg] AS [Userid_stockneg], [msa29d].[dbo].[usermas].[userid_sundrypogl] AS [Userid_sundrypogl], [msa29d].[dbo].[usermas].[userid_super] AS [Userid_super], [msa29d].[dbo].[usermas].[userid_taxinvamt] AS [Userid_taxinvamt], [msa29d].[dbo].[usermas].[userid_tdpsid] AS [Userid_tdpsid], [msa29d].[dbo].[usermas].[userid_totaldisc] AS [Userid_totaldisc], [msa29d].[dbo].[usermas].[userid_type] AS [Userid_type], [msa29d].[dbo].[usermas].[userid_tzoffset] AS [Userid_tzoffset], [msa29d].[dbo].[usermas].[userid_udselect] AS [Userid_udselect], [msa29d].[dbo].[usermas].[userid_whid] AS [Userid_whid], [msa29d].[dbo].[usermas].[userid_wopsid] AS [Userid_wopsid] FROM [msa29d].[dbo].[usermas] WHERE ( ( [msa29d].[dbo].[usermas].[userid_id] = @p1))

Posts: 20
Joined: 27-Jun-2011
# Posted on: 23-Aug-2011 13:51:20   

Otis wrote:

Try to see whether you can write the updates as expressions, then use 'update entities directly' feature (which generates 1 query out of a specific entity to update multiple rows), see the entity sections in the manual for details.

I'll take a look at updating the entities directly tomorrow. This really looks like what I want, but I also think my previous comment could have some merit as well.

Posts: 20
Joined: 27-Jun-2011
# Posted on: 23-Aug-2011 13:55:15   

Hi Otis Could you also take a look at the following question I have. I'm not certain whether this is the best way

http://www.llblgen.com/TinyForum/Messages.aspx?ThreadID=20170

daelmo avatar
daelmo
Support Team
Posts: 8245
Joined: 28-Nov-2005
# Posted on: 23-Aug-2011 20:14:36   

phil.salomon wrote:

Otis wrote:

Try to see whether you can write the updates as expressions, then use 'update entities directly' feature (which generates 1 query out of a specific entity to update multiple rows), see the entity sections in the manual for details.

I am working on a couple of examples. One thing I found was to use the includeexclude list so that I would have thought the select would reduce down to just the fields I want. However the select still seems to select every record. It just only includes certain fields in the fields list. Is this as it should be?

No It isn't. Please show us the code you are using to exclude fields. Also your LLBLGen version and runtime library version (http://llblgen.com/tinyforum/Messages.aspx?ThreadID=7722).

phil.salomon wrote:

I'll take a look at updating the entities directly tomorrow.

Great. For more info read Expressions in Entity Updates.

David Elizondo | LLBLGen Support Team
Posts: 20
Joined: 27-Jun-2011
# Posted on: 24-Aug-2011 01:01:52   

daelmo wrote:

phil.salomon wrote:

Otis wrote:

Try to see whether you can write the updates as expressions, then use 'update entities directly' feature (which generates 1 query out of a specific entity to update multiple rows), see the entity sections in the manual for details.

I am working on a couple of examples. One thing I found was to use the includeexclude list so that I would have thought the select would reduce down to just the fields I want. However the select still seems to select every record. It just only includes certain fields in the fields list. Is this as it should be?

No It isn't. Please show us the code you are using to exclude fields. Also your LLBLGen version and runtime library version (http://llblgen.com/tinyforum/Messages.aspx?ThreadID=7722).

phil.salomon wrote:

I'll take a look at updating the entities directly tomorrow.

Great. For more info read Expressions in Entity Updates.

Well, first I call the following code if I want to just get certain fields

    public void AddIncludeList(String fieldname)
    {
        EntityField2 e;

        if (include == null)
        {
            include = new ExcludeIncludeFieldsList();
            include.ExcludeContainedFields = false;

            String createdname = NameConvert.ModifiedCreatedName(fieldname, true);
            try
            {
                e = (EntityField2)TableEntity.Fields[createdname];
                include.Add(e);
            }
            catch { }

            String modifiedname = NameConvert.ModifiedCreatedName(fieldname, false);
            try
            {
                e = (EntityField2)TableEntity.Fields[modifiedname];
                include.Add(e);
            }
            catch { }

        }

        try
        {
            e = (EntityField2)TableEntity.Fields[NameConvert.ConvertFieldName(fieldname)];
            include.Add(e);
        }
        catch { }


    }

Then use the following code to do the select

    public bool FetchEntityCollection(DataAccessAdapter da, IRelationPredicateBucket filter, ISortExpression sort, out byte[] buffer)
    {
        buffer = null;

        try
        {
            thisCollection.filter = filter;
            thisCollection.sort = sort;
            thisCollection.currentRecord = 0;

            da.FetchEntityCollection(thisCollection.collection, filter, 0, sort, null, include, 1, thisCollection.PageSize);
            if (thisCollection.collection.Count == 0)
            {
                Diagnostic.ErrorCode = Error_Code.INOT_ERR;
                Diagnostic.LastError = "";
                return (false);
            }

            thisCollection.currentRecord = 1;
            TableEntity = thisCollection.GetCurrentEntity();
            PK = GetPrimaryKey();

            buffer = new byte[RecordLength];
            BufferClass.CopyResultToByteBuffer(TableEntity, fields, buffer);

            return (true);
        }
        catch (Exception ex)
        {
            Diagnostic.CatchError(ex, null, thisTable);
            return (false);
        }

    }
Posts: 20
Joined: 27-Jun-2011
# Posted on: 24-Aug-2011 01:15:53   

daelmo wrote:

phil.salomon wrote:

Otis wrote:

Try to see whether you can write the updates as expressions, then use 'update entities directly' feature (which generates 1 query out of a specific entity to update multiple rows), see the entity sections in the manual for details.

I am working on a couple of examples. One thing I found was to use the includeexclude list so that I would have thought the select would reduce down to just the fields I want. However the select still seems to select every record. It just only includes certain fields in the fields list. Is this as it should be?

No It isn't. Please show us the code you are using to exclude fields. Also your LLBLGen version and runtime library version (http://llblgen.com/tinyforum/Messages.aspx?ThreadID=7722).

phil.salomon wrote:

I'll take a look at updating the entities directly tomorrow.

Great. For more info read Expressions in Entity Updates.

hmmm. Thats strange. I tested it again and now its working.

daelmo avatar
daelmo
Support Team
Posts: 8245
Joined: 28-Nov-2005
# Posted on: 24-Aug-2011 06:05:42   

phil.salomon wrote:

hmmm. Thats strange. I tested it again and now its working.

stuck_out_tongue_winking_eye I can't explain that. So, Are you ok now? Is everything is fine and working?

David Elizondo | LLBLGen Support Team
Posts: 20
Joined: 27-Jun-2011
# Posted on: 24-Aug-2011 08:33:40   

Otis wrote:

Try to see whether you can write the updates as expressions, then use 'update entities directly' feature (which generates 1 query out of a specific entity to update multiple rows), see the entity sections in the manual for details.

I have tried the 'update entities directly' feature and have managed to get this to work. I am integrating into a C application, so can use it like the example shows. I need to create an expression, but I think I have a handle on how to do this.

Thanks

Posts: 20
Joined: 27-Jun-2011
# Posted on: 25-Aug-2011 01:52:34   

daelmo wrote:

phil.salomon wrote:

hmmm. Thats strange. I tested it again and now its working.

stuck_out_tongue_winking_eye I can't explain that. So, Are you ok now? Is everything is fine and working?

all good thanks