public void Save($className entity) { #region sql var sql = @" IF EXISTS(SELECT * FROM $tableName WHERE $primaryKeyWhereClause) UPDATE $tableName SET #foreach($column in $nonKeyColumns) $column.Name = @$column.Name#if ($velocityCount < $nonKeyColumnCount),#end #end WHERE $primaryKeyWhereClause ELSE INSERT INTO $tableName( #foreach($column in $columns) [$column.Name]#if ($velocityCount < $columnCount),#end #end ) VALUES ( #foreach($column in $columns) @$column.Name#if ($velocityCount < $columnCount),#end #end ); "; #endrgion using (var cmd = new SqlCommand(sql)) { #region parameters #foreach($column in $columns) cmd.Parameters.Add("@$column.Name", SqlDbType.$column.SqlDbType.ToString()#if ($column.Length > 0), $column.Length#end).Value = entity.$column.Name; #end #endregion _helper.ExecuteNonQuery(cmd); } }