Asignación externaExternal Mapping

LINQ to SQLLINQ to SQL admite asignación externa, un proceso por el que utiliza un archivo XML independiente para especificar la asignación entre el modelo de datos de la base de datos y su modelo de objetos.supports external mapping, a process by which you use a separate XML file to specify mapping between the data model of the database and your object model. Las ventajas de utilizar una archivo de asignación externa son las siguientes:Advantages of using an external mapping file include the following:

  • Puede separar el código de la asignación del código de la aplicación.You can keep your mapping code out of your application code. Este enfoque reduce el desorden en el código de la aplicación.This approach reduces clutter in your application code.

  • Puede tratar un archivo de asignación externo de forma similar a un archivo de configuración.You can treat an external mapping file something like a configuration file. Por ejemplo, puede actualizar cómo se comportará su aplicación después de distribuir los binarios simplemente cambiando el archivo de asignación externo.For example, you can update how your application behaves after shipping the binaries by just swapping out the external mapping file.

RequisitosRequirements

El archivo de asignación debe ser un archivo XML y el archivo debe validarse con un LINQ to SQLLINQ to SQL archivo (.xsd) de definición de esquemas.The mapping file must be an XML file, and the file must validate against a LINQ to SQLLINQ to SQL schema definition (.xsd) file.

Se aplican las siguientes reglas:The following rules apply:

  • El archivo de asignación debe ser un archivo XML.The mapping file must be an XML file.

  • El archivo de asignación XML debe ser válido según el archivo de definición de esquema XML.The XML mapping file must be valid against the XML schema definition file. Para obtener más información, vea Cómo: Validar archivos DBML y asignación externa.For more information, see How to: Validate DBML and External Mapping Files.

  • La asignación externa invalida la asignación basada en atributos.External mapping overrides attribute-based mapping. En otras palabras, al utilizar un origen de asignación externo para crear un DataContext, el DataContext omite todos los atributos de asignación que se han creado en las clases.In other words, when you use an external mapping source to create a DataContext, the DataContext ignores all mapping attributes you have created on classes. Este comportamiento es cierto si la clase está incluida en el archivo de asignación externo.This behavior is true whether the class is included in the external mapping file.

  • LINQ to SQLLINQ to SQL no admite el uso híbrido de los dos enfoques de asignación (basado en atributos y externo).does not support the hybrid use of the two mapping approaches (attribute-based and external).

Archivo de definición de esquema XMLXML Schema Definition File

La asignación externa en LINQ to SQLLINQ to SQL debe ser válida según la siguiente definición de esquema XML.External mapping in LINQ to SQLLINQ to SQL must be valid against the following XML schema definition.

Distinga este archivo de definición de esquema del archivo de definición de esquema que se utiliza para validar un archivo DBML.Distinguish this schema definition file from the schema definition file that is used to validate a DBML file. Para obtener más información, consulte generación de código en LINQ to SQL).For more information, see Code Generation in LINQ to SQL).

Nota

Los usuarios de Visual Studio también encontrarán este archivo XSD en el cuadro de diálogo esquemas XML como "LinqToSqlMapping.xsd".Visual Studio users will also find this XSD file in the XML Schemas dialog box as "LinqToSqlMapping.xsd". Para usar correctamente este archivo para validar un archivo de asignación externa, consulte Cómo: Validar archivos DBML y asignación externa.To use this file correctly for validating an external mapping file, see How to: Validate DBML and External Mapping Files.

?<?xml version="1.0" encoding="utf-16"?>  
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.microsoft.com/linqtosql/mapping/2007" xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007"  
elementFormDefault="qualified" >  
  <xs:element name="Database" type="Database" />  
  <xs:complexType name="Database">  
    <xs:sequence>  
      <xs:element name="Table" type="Table" minOccurs="0" maxOccurs="unbounded" />  
      <xs:element name="Function" type="Function" minOccurs="0" maxOccurs="unbounded" />  
    </xs:sequence>  
    <xs:attribute name="Name" type="xs:string" use="optional" />  
    <xs:attribute name="Provider" type="xs:string" use="optional" />  
  </xs:complexType>  
  <xs:complexType name="Table">  
    <xs:sequence>  
      <xs:element name="Type" type="Type" minOccurs="1" maxOccurs="1" />  
    </xs:sequence>  
    <xs:attribute name="Name" type="xs:string" use="optional" />  
    <xs:attribute name="Member" type="xs:string" use="optional" />  
  </xs:complexType>  
  <xs:complexType name="Type">  
    <xs:sequence>  
      <xs:choice minOccurs="0" maxOccurs="unbounded">  
        <xs:element name="Column" type="Column" minOccurs="0" maxOccurs="unbounded" />  
        <xs:element name="Association" type="Association" minOccurs="0" maxOccurs="unbounded" />  
      </xs:choice>  
      <xs:element name="Type" type="Type" minOccurs="0" maxOccurs="unbounded" />  
    </xs:sequence>  
    <xs:attribute name="Name" type="xs:string" use="required" />  
    <xs:attribute name="InheritanceCode" type="xs:string" use="optional" />  
    <xs:attribute name="IsInheritanceDefault" type="xs:boolean" use="optional" />  
  </xs:complexType>  
  <xs:complexType name="Column">  
    <xs:attribute name="Name" type="xs:string" use="optional" />  
    <xs:attribute name="Member" type="xs:string" use="required" />  
    <xs:attribute name="Storage" type="xs:string" use="optional" />  
    <xs:attribute name="DbType" type="xs:string" use="optional" />  
    <xs:attribute name="IsPrimaryKey" type="xs:boolean" use="optional" />  
    <xs:attribute name="IsDbGenerated" type="xs:boolean" use="optional" />  
    <xs:attribute name="CanBeNull" type="xs:boolean" use="optional" />  
    <xs:attribute name="UpdateCheck" type="UpdateCheck" use="optional" />  
    <xs:attribute name="IsDiscriminator" type="xs:boolean" use="optional" />  
    <xs:attribute name="Expression" type="xs:string" use="optional" />  
    <xs:attribute name="IsVersion" type="xs:boolean" use="optional" />  
    <xs:attribute name="AutoSync" type="AutoSync" use="optional" />  
  </xs:complexType>  
  <xs:complexType name="Association">  
    <xs:attribute name="Name" type="xs:string" use="optional" />  
    <xs:attribute name="Member" type="xs:string" use="required" />  
    <xs:attribute name="Storage" type="xs:string" use="optional" />  
    <xs:attribute name="ThisKey" type="xs:string" use="optional" />  
    <xs:attribute name="OtherKey" type="xs:string" use="optional" />  
    <xs:attribute name="IsForeignKey" type="xs:boolean" use="optional" />  
    <xs:attribute name="IsUnique" type="xs:boolean" use="optional" />  
    <xs:attribute name="DeleteRule" type="xs:string" use="optional" />  
    <xs:attribute name="DeleteOnNull" type="xs:boolean" use="optional" />  
  </xs:complexType>  
  <xs:complexType name="Function">  
    <xs:sequence>  
      <xs:element name="Parameter" type="Parameter" minOccurs="0" maxOccurs="unbounded" />  
      <xs:choice>  
        <xs:element name="ElementType" type="Type" minOccurs="0" maxOccurs="unbounded" />  
        <xs:element name="Return" type="Return" minOccurs="0" maxOccurs="1" />  
      </xs:choice>  
    </xs:sequence>  
    <xs:attribute name="Name" type="xs:string" use="optional" />  
    <xs:attribute name="Method" type="xs:string" use="required" />  
    <xs:attribute name="IsComposable" type="xs:boolean" use="optional" />  
  </xs:complexType>  
  <xs:complexType name="Parameter">  
    <xs:attribute name="Name" type="xs:string" use="optional" />  
    <xs:attribute name="Parameter" type="xs:string" use="required" />  
    <xs:attribute name="DbType" type="xs:string" use="optional" />  
    <xs:attribute name="Direction" type="ParameterDirection" use="optional" />  
  </xs:complexType>  
  <xs:complexType name="Return">  
    <xs:attribute name="DbType" type="xs:string" use="optional" />  
  </xs:complexType>  
  <xs:simpleType name="UpdateCheck">  
    <xs:restriction base="xs:string">  
      <xs:enumeration value="Always" />  
      <xs:enumeration value="Never" />  
      <xs:enumeration value="WhenChanged" />  
    </xs:restriction>  
  </xs:simpleType>  
  <xs:simpleType name="ParameterDirection">  
    <xs:restriction base="xs:string">  
      <xs:enumeration value="In" />  
      <xs:enumeration value="Out" />  
      <xs:enumeration value="InOut" />  
    </xs:restriction>  
  </xs:simpleType>  
  <xs:simpleType name="AutoSync">  
    <xs:restriction base="xs:string">  
      <xs:enumeration value="Never" />  
      <xs:enumeration value="OnInsert" />  
      <xs:enumeration value="OnUpdate" />  
      <xs:enumeration value="Always" />  
      <xs:enumeration value="Default" />  
    </xs:restriction>  
  </xs:simpleType>  
</xs:schema>  

Vea tambiénSee also