Ir para o conteúdo

Dicas para Trabalhar com Colunas Binárias

Para fins de desempenho com aplicativos Vinyl, adicione apenas uma coluna binária a um Business Object se você for usar essa coluna em um controle de arquivo. Se você estiver construindo um Business Object com uma tabela que inclui colunas binárias, não selecione o botão All para adicionar todas as colunas, a menos que esse objeto seja usado para exibir um controle de arquivo em um painel. Vale a pena criar Business Objects especificamente para usar em painéis onde um arquivo é carregado/baixado. Além disso, considere se você pode ter adicionado um a uma tabela de usuário/parâmetro e adicioná-lo a outros objetos de negócios e, em seguida, selecionar todas as colunas.

Se você tiver um painel multilinha (MRP) com 25 registros retornando e houver um campo binário selecionado no Business Object atrás desse painel, ele recuperará todos os 25 arquivos sempre que o painel for renderizado. Se você tiver 4 arquivos binários nesse Business Object, ele recuperará 100 arquivos sempre que o painel for renderizado.

Se você deseja que um arquivo possa ser baixado de um MRP, considere chamar o botão de download em uma página oculta para que ele não recupere o arquivo como parte da renderização do painel MRP.

Abaixo está uma consultar que você pode executar em seu servidor que encontrará ALGUNS dos arquivos em um Business Object atrás de um painel onde o arquivo não é usado em um controle:

SELECT        TOP (100) PERCENT Ui_Control_1.Name AS Page, dbo.Ui_Control.Name AS Panel, dbo.Db_Table.Name AS DataObjectName, dbo.Db_Column.Name AS ColumnName
FROM            dbo.Ui_Control INNER JOIN
                         dbo.Ui_Control AS Ui_Control_1 ON dbo.Ui_Control.RootControlId = Ui_Control_1.ControlId INNER JOIN
                         dbo.Db_Table ON dbo.Ui_Control.SourceTableId = dbo.Db_Table.TableId INNER JOIN
                         dbo.Db_Column ON dbo.Db_Table.TableId = dbo.Db_Column.TableId INNER JOIN
                         dbo.Db_Column AS Db_Column_1 ON dbo.Db_Column.TargetColumnId = Db_Column_1.ColumnId INNER JOIN
                         dbo.Db_StorageDataType ON Db_Column_1.StorageDataTypeId = dbo.Db_StorageDataType.StorageDataTypeId LEFT OUTER JOIN
                         dbo.Ui_Control AS Ui_Control_2 ON dbo.Ui_Control.ControlId = Ui_Control_2.PanelControlId AND dbo.Db_Column.ColumnId = Ui_Control_2.SourceColumnId
WHERE        (dbo.Ui_Control.ControlTypeId = '81d20b00-15b2-f8c3-7fe1-d889d9c7e95f') AND (dbo.Db_StorageDataType.Name = N'binary') AND (Ui_Control_2.ControlId IS NULL)
ORDER BY DataObjectName

Nota

Ao recuperar os resultados do Business Object atrás de um painel, ele recuperará apenas as colunas necessárias para os controles, A MENOS que você esteja usando formatação condicional; nesse caso, ele recuperará todas as colunas para a lógica condicional.