Invalidación de valores predeterminados de SPMetal con un archivo XML de parámetros

Última modificación: jueves, 10 de marzo de 2011

Hace referencia a: SharePoint Foundation 2010

En este artículo
Archivo XML de parámetros SPMetal
Valores predeterminados de SPMetal
Cambiar el comportamiento predeterminado

En este tema se explica cómo puede usarse un archivo de formato XML para cambiar el comportamiento predeterminado de SPMetal con respecto al código que genera, incluidas las listas, los tipos de contenido y las columnas que se modelan en el código generado.

La referencia formal para el formato XML que se usa en el archivo empieza en el tema Esquema del XML de parámetros SPMetal.

Archivo XML de parámetros SPMetal

Un archivo XML de parámetros SPMetal contiene formato XML que indica a SPMetal determinados detalles sobre el código que debe generar. En concreto, especifica las listas, los tipos de contenido y campos (columnas) que se deben modelar en el código. El archivo se pasa a SPMetal mediante la opción de la línea de comandos /parameters. Para obtener más información acerca de las opciones de la línea de comandos SPMetal, vea SPMetal.

Valores predeterminados de SPMetal

SPMetal no requiere un archivo XML de parámetros. A falta de uno, usa sus reglas predeterminadas. Si se usa un archivo de parámetros, SPMetal usa sus reglas predeterminadas, excepto cuando el archivo de parámetros las contradice de manera explícita. Para obtener más información acerca de estas reglas, vea Reglas de generación de código SPMetal predeterminado.

Cambiar el comportamiento predeterminado

En esta sección se explica cómo se puede cambiar parte del comportamiento predeterminado de SPMetal mediante el formato en un archivo XML de parámetros.

Elemento Web

El elemento de nivel superior es <Web>. Establezca su atributo Class si no desea usar el nombre que SPMetal asignaría de manera predeterminada a la clase derivada de DataContext que representa todo el contenido del sitio web. Establezca su atributo AccessModifier en "Internal" si desea que la clase generada sea internal (Friend en Microsoft Visual Basic). El valor predeterminado es Public.

Elemento List

Si desea cambiar la forma en que SPMetal genera una propiedad para representar una lista, agregue un elemento <List> como elemento secundario al elemento <Web>. También puede agregar un elemento <List> para hacer que SPMetal genere una clase para una lista que no modelaría de manera predeterminada, como por ejemplo una lista oculta. Establezca su atributo Name obligatorio en el nombre de la lista.

Si no desea usar el nombre que SPMetal asignaría de manera predeterminada a la propiedad que representa la lista, use el atributo Member para especificar un nombre alternativo. Por ejemplo, de manera predeterminada, SPMetal usará "Calendar" como nombre de la propiedad para obtener una lista de calendario. Puede cambiar esto a ScheduledEvents mediante el formato <List Name="Calendar" Member="ScheduledEvents"/>.

Si no desea que el tipo de elementos en la lista sea lo que SPMetal designaría de manera predeterminada, establezca el parámetro Type en otro tipo. Por ejemplo, puede crear (en un archivo de código independiente) una clase que sea igual que la clase que SPMetal crearía como el tipo de elemento de lista, con la diferencia de que tiene una propiedad adicional que permite escritura. Puede designar la clase para que sea del tipo de elemento de lista y tenga código de llamada que escriba en esa propiedad de los elementos de lista devueltos por una consulta LINQ.

Nota

No use el atributo Type de <List> para cambiar el nombre de la clase que SPMetal genera para el tipo de elemento de lista. En su lugar, use el atributo Class de un elemento <ContentType> que sea elemento secundario del elemento <List>. Vea Elemento ContentType más adelante en este tema.

Hay dos posibles elementos secundarios para el elemento <List>: <ContentType> y <ExcludeContentType>. Dichos elementos funcionan de forma idéntica para los elementos de los mismos nombres que son secundarios del elemento <Web>, con la diferencia de que se aplican a tipos de contenido que se encuentran en el ámbito de una lista en lugar de todo el sitio.

ExcludeList

Agregue este elemento secundario al elemento <Web> para impedir que SPMetal genere una propiedad para una lista determinada. Establezca el atributo Name necesario en el nombre de la lista.

ExcludeOtherLists

Agregue este elemento secundario al elemento <Web> para impedir que SPMetal genere propiedades para cualquier lista que no esté representada de forma explícita por los elementos <List>. No puede tener este elemento y un elemento <IncludeHiddenLists>.

IncludeHiddenLists

Agregue este elemento secundario al elemento <Web> para hacer que SPMetal genere propiedades para todas las listas ocultas. No puede tener este elemento y un elemento <ExcludeOtherLists>.

Elemento ContentType

Si desea cambiar la forma en que SPMetal genera una clase para representar un tipo de contenido, agregue un elemento <ContentType> como elemento secundario del elemento <Web> (o el elemento <List>). También puede agregar un elemento <ContentType> para hacer que SPMetal genere una clase para un tipo de contenido que no modelaría de manera predeterminada, como por ejemplo un tipo de contenido oculto. Establezca el atributo Name obligatorio del elemento <ContentType> en el nombre del tipo de contenido. (Use "Item" como nombre del tipo de contenido básico de SharePoint Foundation).

Si no desea usar el nombre que SPMetal asignaría de manera predeterminada a la clase que representa el tipo de contenido, use el atributo Class para especificar un nombre alternativo. Por ejemplo, si el sitio web tiene una lista de integrantes del grupo y se le han agregado columnas, SPMetal crea de manera predeterminada una clase TeamMembersItem para que sea el tipo de los elementos de lista y especifica esto como parámetro de tipo para la propiedad EntityList<TEntity> que representa la lista. Puede cambiar el parámetro de tipo por algo más legible, como TeamMember, con el siguiente formato:

<List Name="Team Members">
    <ContentType Name="Item" Class="TeamMember" />
</List>

Establezca el atributo AccessModifier en "Internal" si desea que la clase generada sea internal (Friend en Visual Basic). El valor predeterminado es Public. No hay otras opciones.

Elemento Column

Agregue este elemento secundario al elemento <ContentType> para hacer que SPMetal cree una propiedad que represente un campo (columna) que no debería modelar de manera predeterminada, como por ejemplo un campo oculto. Establezca el atributo Name necesario en el nombre interno del campo. Si el elemento primario <ContentType> es un elemento secundario de un elemento <List>, también podrá tener elementos <Column> que representen campos que estén en la lista, pero no en el propio tipo de contenido, lo que puede ocurrir si se ha agregado una columna a una lista.

Si no desea usar el nombre que SPMetal asignaría de manera predeterminada a la propiedad que representa el campo, use el atributo Member para especificar un nombre alternativo.

Si el campo es un campo de opción y desea que el tipo de la propiedad que modela el campo sea String, incluso si el campo no permite opciones "Fill-in", establezca el atributo Type en "String". (De manera predeterminada, SPMetal generará una declaración de una clase Enum mediante los valores permitidos especificados en la definición de columna para cualquier columna de elección que no permita opciones "Fill-in"). Para obtener más información acerca de la forma en que LINQ to SharePoint asigna tipos de campo de SharePoint Foundation en tipos de datos de Microsoft .NET Framework 3.5, vea Asignación de tipo: Desde proveedor LINQ a SharePoint hasta .NET.

Elemento ExcludeColumn

Agregue este elemento secundario al elemento <ContentType> para impedir que SPMetal genere una propiedad para un campo (columna) determinado. Establezca el atributo Name necesario en el nombre interno del campo.

Elemento ExcludeOtherColumns

Agregue este elemento secundario al elemento <ContentType> para impedir que SPMetal genere propiedades para cualquier columna que no esté representada de forma explícita por los elementos <Column>. No puede tener este elemento y un elemento <IncludeHiddenColumns>.

Elemento IncludeHiddenColumns

Agregue este elemento secundario al elemento <ContentType> para hacer que SPMetal genere propiedades para todos los campos ocultos del tipo de contenido. No puede tener este elemento y un elemento <ExcludeOtherColumns>.

ExcludeContentType

Agregue este elemento secundario al elemento <Web> (o al elemento <List>) para impedir que SPMetal genere una clase para un tipo de contenido determinado. Establezca el atributo Name necesario en el nombre del tipo de contenido.

Nota

No se puede bloquear la generación de clases para un tipo de contenido si se están generando otras clases de tipo de contenido que van a heredar de la clase bloqueada. Por ejemplo, si se intentó bloquear la generación de clases para el tipo de contenido básico y sin nombre de SharePoint Foundation (que se denomina "Item") con un elemento <ExcludeContentType Name="Item" />, también tendrá que agregar elementos <ExcludeContentType /> para cada clase de contenido que herede de Item.

ExcludeOtherContentTypes

Agregue este elemento secundario al elemento <Web> para impedir que SPMetal genere clases para cualquier tipo de contenido que esté representado de forma explícita por los elementos <ContentType>. No puede tener este elemento y un elemento <IncludeHiddenContentTypes>.

IncludeHiddenContentTypes

Agregue este elemento secundario al elemento <Web> para hacer que SPMetal genere clases para todos los tipos de contenido ocultos. No puede tener este elemento y un elemento <ExcludeOtherContentTypes>.

Ejemplo de un archivo XML de parámetros SPMetal

<?xml version="1.0" encoding="utf-8"?>
<Web AccessModifier="Internal" xmlns="http://schemas.microsoft.com/SharePoint/2009/spmetal">
  <ContentType Name="Contact" Class="Contact">
    <Column Name="ContId" Member="ContactId" />
    <Column Name="ContactName" Member="ContactName1" />
    <Column Name="Category" Member="Cat" Type="String"/>
    <ExcludeColumn Name="HomeTelephone" />
  </ContentType>
  <ExcludeContentType Name="Order"/>
  <List Name="Team Members" Type="TeamMember">
    <ContentType Name="Item" Class="TeamMember" />
  </List>
</Web>

Vea también

Tareas

Procedimiento para usar SPMetal

Referencia

SPMetal

Conceptos

Esquema del XML de parámetros SPMetal

Reglas de generación de código SPMetal predeterminado

Asignación de tipo: Desde proveedor LINQ a SharePoint hasta .NET