Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
LINQ to SQL unterstützt die externe Zuordnung, einen Prozess, mit dem Sie eine separate XML-Datei verwenden, um die Zuordnung zwischen dem Datenmodell der Datenbank und Dem Objektmodell anzugeben. Die Vorteile der Verwendung einer externen Zuordnungsdatei umfassen Folgendes:
Sie können den Zuordnungscode vom Anwendungscode trennen. Dieser Ansatz reduziert die Unübersichtlichkeit in Ihrem Anwendungscode.
Sie können eine externe Zuordnungsdatei wie eine Konfigurationsdatei behandeln. Sie können beispielsweise aktualisieren, wie sich Ihre Anwendung nach dem Versand der Binärdateien verhält, indem Sie einfach die externe Zuordnungsdatei austauschen.
Anforderungen
Die Zuordnungsdatei muss eine XML-Datei sein, und die Datei muss anhand einer LINQ to SQL-Schemadefinitionsdatei (XSD) überprüft werden.
Es gelten die folgenden Regeln:
Die Zuordnungsdatei muss eine XML-Datei sein.
Die XML-Zuordnungsdatei muss für die XML-Schemadefinitionsdatei gültig sein. Weitere Informationen finden Sie unter How to: Validate DBML and External Mapping Files.
Die externe Zuordnung hebt die Zuordnung nach Attributen auf. Anders ausgedrückt: Wenn Sie eine externe Zuordnungsquelle verwenden, um eine DataContext zu erstellen, werden alle Zuordnungsattribute, die Sie für Klassen erstellt haben, von DataContext ignoriert. Dieses Verhalten gilt unabhängig davon, ob die Klasse in der externen Zuordnungsdatei enthalten ist.
LINQ to SQL unterstützt die hybride Verwendung der beiden Zuordnungsansätze (attributbasiert und extern) nicht.
XML-Schemadefinitionsdatei
Die externe Zuordnung in LINQ to SQL muss anhand der folgenden XML-Schemadefinition gültig sein.
Unterscheiden Sie diese Schemadefinitionsdatei von der Schemadefinitionsdatei, die zum Überprüfen einer DBML-Datei verwendet wird. Weitere Informationen finden Sie unter Codegenerierung in LINQ to SQL).
Hinweis
Visual Studio-Benutzer finden diese XSD-Datei auch im Dialogfeld "XML-Schemas" als "LinqToSqlMapping.xsd". Weitere Informationen zur ordnungsgemäßen Verwendung dieser Datei zum Überprüfen einer externen Zuordnungsdatei finden Sie unter Überprüfen von DBML- und externen Zuordnungsdateien.
<?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>