Blog del CIIN

Blog del Centro de Innovación en Integración de Cantabria

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

Enlaces Recomendados

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:\Temp\MyDW_images\abrigo1.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>

Published 5/6/2012 8:41 por Juan Carlos González Martín

Comparte este post:

Comentarios

# SharePoint 2010: Resumen de posts (XXXII)!@ Sunday, July 01, 2012 10:34 AM

Como siempre , después del recopilatorio de enlaces interesantes sobre SharePoint 2010 os dejo el resumen

Blog del CIIN