SharePoint 2010: ¿Qué pasa con columnas de tipo varbinary en tipos de contenido externo? (I)

Cómo sabéis, SharePoint 2010 permite integra datos de sistemas de negocio en sitios a través de modelar tipos de contenido externo ya sea con SharePoint Designer 2010 (SPD 2010) o Visual Studio. Una inconveniente al que nos podemos enfrentar no tanto en el modelado de estos ECTs, sino en su consumo es el de como tratar a datos de tipo varbinary como puedan ser imágenes o archivos que se hayan guardado en una tabla de base de datos. Por ejemplo, podemos tener una tabla DimProduct en la que almacénenos una foto de cada producto registrado en la misma…la pregunta es: ¿Cómo se tratan esas fotos en una lista externa?

   1: INSERT INTO [My_DW].[dbo].[DimProduct]

   2:            ([ProductAlternateKey]

   3:            ,[ProductSubcategoryKey]

   4:            ,[ProductEmployeeKey]

   5:            ,[ProductName]

   6:            ,[StandardCost]

   7:            ,[NewProductFlag]

   8:            ,[ListPrice]           

   9:            ,[ProductDescription])

  10:      VALUES

  11:            ('1'

  12:            ,1

  13:            ,1

  14:            ,'ABRIGO VIVOS POLIPIEL'

  15:            ,'39.99'

  16:            ,1

  17:            ,'59.95'           

  18:            ,'ABRIGO VIVOS POLIPIEL')

  19: GO

  20:  

  21: UPDATE [My_DW].[dbo].[DimProduct]

  22: SET    [ProductPhoto] = (SELECT *

  23:                 FROM   OPENROWSET(BULK 'C:TempMyDW_imagesabrigo1.JPG',

  24:                        SINGLE_BLOB) AS x)

  25: WHERE  [ProductAlternateKey] = '1'

Lo primero que veremos es que el modelado del ECT respeta la definición de la columna de tipo varbinary en este caso y la mapea a un tipo byte[] de .NET Framework:

  • En primer lugar, y simplemente a título informativo, si realizamos una consulta T-SQL a la tabla en cuestión veremos que la columna de tipo varbinary muestra un “churro” binario que representa la foto en este caso.
  • Si creamos el ECT en SPD 2010, podremos comprobar que si es capaz de interpretar la columna y por lo tanto incorporarla a su definición
  • Sin embargo, si creamos una lista externa a partir de ese ECT nos encontraremos con qué no hay ni rastro de la citada columna y que no se ha creado a nivel de lista una columna que contenga la imagen…vaya fail.
image image image
  • Si exportamos la definición del ECT desde SPD 2010, podremos comprobar en cambio que s se incluye la columna mapeada a un tipo byte[].

image

  • Por lo tanto, el ECT si tiene mapeado el atributo y en teoría deberíamos poder consumir la información pero ya desde desarrollo…y este es tema para otro post más adelante.
   1: <Parameter Direction="In" Name="@ProductPhoto">

   2:   <TypeDescriptor TypeName="System.Byte[]" CreatorField="true" Name="ProductPhoto" />

   3: </Parameter>

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

Un comentario en “SharePoint 2010: ¿Qué pasa con columnas de tipo varbinary en tipos de contenido externo? (I)”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *