Код: Выделить всё
using( SqlConnection cn = new SqlConnection( Utils.sSqlConn ) )
using( SqlCommand cm = Utils.NewSqlCmdProc( cn, DA.prUser_InsUpd ) )
{
cm.Parameters.Add( "idUser", SqlDbType.Int ).Direction = ParameterDirection.InputOutput;
cm.Parameters.Add( "sUser", SqlDbType.VarChar,32 );
cm.Parameters.Add( "sName", SqlDbType.VarChar,64 );
cm.Parameters.Add( "idLvl", SqlDbType.TinyInt );
cm.Parameters.Add( "sCode", SqlDbType.VarChar,32 );
cm.Parameters.Add( "bActive", SqlDbType.Bit );
try
{ cn.Open( );
foreach( User item in ls ) /// ls =is= List
if( item.IsDirty && item.IsValid( sb ) ) /// save every modified item
{
int i = 0;
cm.Parameters[ i ].Value = item.idUser;
cm.Parameters[ ++i ].Value = item.sUser;
cm.Parameters[ ++i ].Value = DA.DbNullStr( item.sName );
cm.Parameters[ ++i ].Value = item.idLvl;
cm.Parameters[ ++i ].Value = DA.DbNullStr( item.sCode );
cm.Parameters[ ++i ].Value = item.bActive;
cm.ExecuteNonQuery( );
item.idUser = (int) cm.Parameters[ 0 ].Value; ///
Подробнее здесь: [url]https://stackoverflow.com/questions/79786694/efficient-iteration-over-sqlcommand-parameters-collection-when-stored-procedures[/url]