Übersetzung vorschlagen
 
Andere Vorschläge:

progress indicator
Keine anderen Vorschläge
Per Mausklick bewerten und Feedback geben
MSDN
MSDN Library
.NET Entwicklung
.NET Framework 4
ADO.NET
LINQ to SQL
 Codegenerierung in LINQ to SQL
Alle reduzieren/Alle erweitern Alle reduzieren
Inhalt anzeigen:  Englisch mit deutscher ÜbersetzungInhalt anzeigen: Englisch mit deutscher Übersetzung
LINQ to SQL
Code Generation in LINQ to SQL

You can generate code to represent a database by using either the Object Relational Designer or the SQLMetal command-line tool. In either case, end-to-end code generation occurs in three stages:

  1. The DBML Extractor extracts schema information from the database and reassembles the information into an XML-formatted DBML file.

  2. The DBML file is scanned by the DBML Validator for errors.

  3. If no validation errors appear, the file is passed to the Code Generator.

For more information, see SqlMetal.exe (Code Generation Tool). Developers using Visual Studio can also use the Object Relational Designer to generate code. For more information, see Object Relational Designer (O/R-Designer).

The DBML Extractor is a LINQ to SQL component that takes database metadata as input and produces a DBML file as output. The following illustration points out the sequence of operations.

DBML Extractor

The Code Generator is a LINQ to SQL component that translates DBML files to Visual Basic, C#, or XML mapping files. The following illustration points out the sequence of operations.

Code Generator

The DBML file must be valid against the following schema definition as an XSD file.

Distinguish this schema definition file from the schema definition file that is used to validate an external mapping file. For more information, see External Mapping Reference (LINQ to SQL)).

NoteNote

Visual Studio users will also find this XSD file in the XML Schemas dialog box as "DbmlSchema.xsd". To use the XSD file correctly for validating a DBML file, see How to: Validate DBML and External Mapping Files (LINQ to SQL).

?<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.microsoft.com/linqtosql/dbml/2007" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007"
elementFormDefault="qualified" >
  <xs:element name="Database" type="Database" />
  <xs:complexType name="Database">
    <xs:sequence>
      <xs:element name="Connection" type="Connection" minOccurs="0" maxOccurs="1" />
      <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="EntityNamespace" type="xs:string" use="optional" />
    <xs:attribute name="ContextNamespace" type="xs:string" use="optional" />
    <xs:attribute name="Class" type="xs:string" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="ClassModifier" use="optional" />
    <xs:attribute name="BaseType" type="xs:string" use="optional" />
    <xs:attribute name="Provider" type="xs:string" use="optional" />
    <xs:attribute name="ExternalMapping" type="xs:boolean" use="optional" />
    <xs:attribute name="Serialization" type="SerializationMode" use="optional" />
    <xs:attribute name="EntityBase" type="xs:string" use="optional" />
  </xs:complexType>
  <xs:complexType name="Table">
    <xs:all>
      <xs:element name="Type" type="Type" minOccurs="1" maxOccurs="1" />
      <xs:element name="InsertFunction" type="TableFunction" minOccurs="0" maxOccurs="1" />
      <xs:element name="UpdateFunction" type="TableFunction" minOccurs="0" maxOccurs="1" />
      <xs:element name="DeleteFunction" type="TableFunction" minOccurs="0" maxOccurs="1" />
    </xs:all>
    <xs:attribute name="Name" type="xs:string" use="required" />
    <xs:attribute name="Member" type="xs:string" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="MemberModifier" 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="IdRef" type="xs:IDREF" use="optional" />
    <xs:attribute name="Id" type="xs:ID" use="optional" />
    <xs:attribute name="Name" type="xs:string" use="optional" />
    <xs:attribute name="InheritanceCode" type="xs:string" use="optional" />
    <xs:attribute name="IsInheritanceDefault" type="xs:boolean" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="ClassModifier" 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="optional" />
    <xs:attribute name="Storage" type="xs:string" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="MemberModifier" use="optional" />
    <xs:attribute name="Type" type="xs:string" use="required" />
    <xs:attribute name="DbType" type="xs:string" use="optional" />
    <xs:attribute name="IsReadOnly" type="xs:boolean" 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="IsDelayLoaded" 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="required" />
    <xs:attribute name="Member" type="xs:string" use="required" />
    <xs:attribute name="Storage" type="xs:string" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="MemberModifier" use="optional" />
    <xs:attribute name="Type" type="xs:string" use="required" />
    <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="Cardinality" type="Cardinality" 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="required" />
    <xs:attribute name="Id" type="xs:ID" use="optional" />
    <xs:attribute name="Method" type="xs:string" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="MemberModifier" use="optional" />
    <xs:attribute name="HasMultipleResults" type="xs:boolean" use="optional" />
    <xs:attribute name="IsComposable" type="xs:boolean" use="optional" />
  </xs:complexType>
  <xs:complexType name="TableFunction">
    <xs:sequence>
      <xs:element name="Argument" type="TableFunctionParameter" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="Return" type="TableFunctionReturn" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="FunctionId" type="xs:IDREF" use="required" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
  </xs:complexType>
  <xs:complexType name="Parameter">
    <xs:attribute name="Name" type="xs:string" use="required" />
    <xs:attribute name="Parameter" type="xs:string" use="optional" />
    <xs:attribute name="Type" 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="Type" type="xs:string" use="required" />
    <xs:attribute name="DbType" type="xs:string" use="optional" />
  </xs:complexType>
  <xs:complexType name="TableFunctionParameter">
    <xs:attribute name="Parameter" type="xs:string" use="required" />
    <xs:attribute name="Member" type="xs:string" use="required" />
    <xs:attribute name="Version" type="Version" use="optional" />
  </xs:complexType>
  <xs:complexType name="TableFunctionReturn">
    <xs:attribute name="Member" type="xs:string" use="required" />
  </xs:complexType>
  <xs:complexType name="Connection">
    <xs:attribute name="Provider" type="xs:string" use="required" />
    <xs:attribute name="Mode" type="ConnectionMode" use="optional" />
    <xs:attribute name="ConnectionString" type="xs:string" use="optional" />
    <xs:attribute name="SettingsObjectName" type="xs:string" use="optional" />
    <xs:attribute name="SettingsPropertyName" type="xs:string" use="optional" />
  </xs:complexType>
  <xs:simpleType name="ConnectionMode">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ConnectionString" />
      <xs:enumeration value="AppSettings" />
      <xs:enumeration value="WebSettings" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="AccessModifier">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Public" />
      <xs:enumeration value="Internal" />
      <xs:enumeration value="Protected" />
      <xs:enumeration value="ProtectedInternal" />
      <xs:enumeration value="Private" />
    </xs:restriction>
  </xs:simpleType>
  <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="SerializationMode">
    <xs:restriction base="xs:string">
      <xs:enumeration value="None" />
      <xs:enumeration value="Unidirectional" />
    </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="Version">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Current" />
      <xs:enumeration value="Original" />
    </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:simpleType name="ClassModifier">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Sealed" />
      <xs:enumeration value="Abstract" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MemberModifier">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Virtual" />
      <xs:enumeration value="Override" />
      <xs:enumeration value="New" />
      <xs:enumeration value="NewVirtual" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Cardinality">
    <xs:restriction base="xs:string">
      <xs:enumeration value="One" />
      <xs:enumeration value="Many" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

The following code is an excerpt from the DBML file created from the Northwind sample database. You can generate the whole file by using SQLMetal with the /xml option. For more information, see SqlMetal.exe (Code Generation Tool).

<?xml version="1.0" encoding="utf-16"?>
<Database Name="northwnd" Class="Northwnd" xmlns="http://schemas.microsoft.com/dsltools/DLinqML">

  <Table Name="Customers">
    <Type Name="Customer">
      <Column Name="CustomerID" Type="System.String" DbType="NChar(5) NOT NULL" IsPrimaryKey="True" CanBeNull="False" />
      <Column Name="CompanyName" Type="System.String" DbType="NVarChar(40) NOT NULL" CanBeNull="False" />
      <Column Name="ContactName" Type="System.String" DbType="NVarChar(30)" CanBeNull="True" />
      <Column Name="ContactTitle" Type="System.String" DbType="NVarChar(30)" CanBeNull="True" />
      <Column Name="Address" Type="System.String" DbType="NVarChar(60)" CanBeNull="True" />
      <Column Name="City" Type="System.String" DbType="NVarChar(15)" CanBeNull="True" />
      <Column Name="Region" Type="System.String" DbType="NVarChar(15)" CanBeNull="True" />
      <Column Name="PostalCode" Type="System.String" DbType="NVarChar(10)" CanBeNull="True" />
      <Column Name="Country" Type="System.String" DbType="NVarChar(15)" CanBeNull="True" />
      <Column Name="Phone" Type="System.String" DbType="NVarChar(24)" CanBeNull="True" />
      <Column Name="Fax" Type="System.String" DbType="NVarChar(24)" CanBeNull="True" />
      <Association Name="FK_CustomerCustomerDemo_Customers" Member="CustomerCustomerDemos" ThisKey="CustomerID" OtherKey="CustomerID" OtherTable="CustomerCustomerDemo" DeleteRule="NO ACTION" />
      <Association Name="FK_Orders_Customers" Member="Orders" ThisKey="CustomerID" OtherKey="CustomerID" OtherTable="Orders" DeleteRule="NO ACTION" />
    </Type>
  </Table>
</Database>
LINQ to SQL
Codegenerierung in LINQ to SQL

Sie können Code zur Darstellung einer Datenbank generieren, indem Sie entweder den O/R-Designer oder das SQLMetal-Befehlszeilentool verwenden. Die End-to-End-Codegenerierung findet grundsätzlich in drei Phasen statt:

  1. Das DBML-Extrahierungsprogramm extrahiert Schemainformationen aus der Datenbank und setzt die Informationen in einer XML-formatierten DBML-Datei wieder zusammen.

  2. Die DBML-Datei wird vom DBML-Validierungsprogramm auf Fehler überprüft.

  3. Wenn keine Validierungsfehler auftreten, wird die Datei an den Code-Generator übergeben.

Weitere Informationen finden Sie unter SqlMetal.exe (Tool zur Codegenerierung). Entwickler mit Visual Studio können diesen Code auch mithilfe des O/R-Designer generieren. Weitere Informationen finden Sie unter Object Relational Designer (O/R-Designer).

Das DBML-Extrahierungsprogramm ist eine LINQ to SQL-Komponente, die Datenbank-Metadaten als Eingabe akzeptiert und eine DBML-Datei als Ausgabe erstellt. In der folgenden Abbildung wird die Operationsabfolge veranschaulicht.

DBML-Extraktionsprogramm

Der Code-Generator ist eine LINQ to SQL-Komponente, die DBML-Dateien in Visual Basic-, C#- oder XML-Zuordnungsdateien übersetzt. In der folgenden Abbildung wird die Operationsabfolge veranschaulicht.

Codegenerator

Die DBML-Datei muss gegenüber der folgenden Schemadefinition als XSD-Datei gültig sein.

Beachten Sie den Unterschied zwischen dieser Schemadefinitionsdatei und der Schemadefinitionsdatei, die zum Überprüfen einer externen Zuordnungsdatei verwendet wird. Weitere Informationen finden Sie unter Referenz zur externen Zuordnung (LINQ to SQL).

HinweisHinweis

Visual Studio-Benutzer finden diese XSD-Datei auch im Dialogfeld XML-Schemas als Datei "DbmlSchema.xsd". Weitere Informationen darüber, wie Sie die XSD-Datei ordnungsgemäß zum Überprüfen einer DBML-Datei verwenden, finden Sie unter Vorgehensweise: Validierung von DBML und externen Zuordnungsdateien (LINQ to SQL).

?<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://schemas.microsoft.com/linqtosql/dbml/2007" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007"
elementFormDefault="qualified" >
  <xs:element name="Database" type="Database" />
  <xs:complexType name="Database">
    <xs:sequence>
      <xs:element name="Connection" type="Connection" minOccurs="0" maxOccurs="1" />
      <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="EntityNamespace" type="xs:string" use="optional" />
    <xs:attribute name="ContextNamespace" type="xs:string" use="optional" />
    <xs:attribute name="Class" type="xs:string" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="ClassModifier" use="optional" />
    <xs:attribute name="BaseType" type="xs:string" use="optional" />
    <xs:attribute name="Provider" type="xs:string" use="optional" />
    <xs:attribute name="ExternalMapping" type="xs:boolean" use="optional" />
    <xs:attribute name="Serialization" type="SerializationMode" use="optional" />
    <xs:attribute name="EntityBase" type="xs:string" use="optional" />
  </xs:complexType>
  <xs:complexType name="Table">
    <xs:all>
      <xs:element name="Type" type="Type" minOccurs="1" maxOccurs="1" />
      <xs:element name="InsertFunction" type="TableFunction" minOccurs="0" maxOccurs="1" />
      <xs:element name="UpdateFunction" type="TableFunction" minOccurs="0" maxOccurs="1" />
      <xs:element name="DeleteFunction" type="TableFunction" minOccurs="0" maxOccurs="1" />
    </xs:all>
    <xs:attribute name="Name" type="xs:string" use="required" />
    <xs:attribute name="Member" type="xs:string" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="MemberModifier" 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="IdRef" type="xs:IDREF" use="optional" />
    <xs:attribute name="Id" type="xs:ID" use="optional" />
    <xs:attribute name="Name" type="xs:string" use="optional" />
    <xs:attribute name="InheritanceCode" type="xs:string" use="optional" />
    <xs:attribute name="IsInheritanceDefault" type="xs:boolean" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="ClassModifier" 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="optional" />
    <xs:attribute name="Storage" type="xs:string" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="MemberModifier" use="optional" />
    <xs:attribute name="Type" type="xs:string" use="required" />
    <xs:attribute name="DbType" type="xs:string" use="optional" />
    <xs:attribute name="IsReadOnly" type="xs:boolean" 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="IsDelayLoaded" 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="required" />
    <xs:attribute name="Member" type="xs:string" use="required" />
    <xs:attribute name="Storage" type="xs:string" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="MemberModifier" use="optional" />
    <xs:attribute name="Type" type="xs:string" use="required" />
    <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="Cardinality" type="Cardinality" 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="required" />
    <xs:attribute name="Id" type="xs:ID" use="optional" />
    <xs:attribute name="Method" type="xs:string" use="optional" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
    <xs:attribute name="Modifier" type="MemberModifier" use="optional" />
    <xs:attribute name="HasMultipleResults" type="xs:boolean" use="optional" />
    <xs:attribute name="IsComposable" type="xs:boolean" use="optional" />
  </xs:complexType>
  <xs:complexType name="TableFunction">
    <xs:sequence>
      <xs:element name="Argument" type="TableFunctionParameter" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="Return" type="TableFunctionReturn" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="FunctionId" type="xs:IDREF" use="required" />
    <xs:attribute name="AccessModifier" type="AccessModifier" use="optional" />
  </xs:complexType>
  <xs:complexType name="Parameter">
    <xs:attribute name="Name" type="xs:string" use="required" />
    <xs:attribute name="Parameter" type="xs:string" use="optional" />
    <xs:attribute name="Type" 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="Type" type="xs:string" use="required" />
    <xs:attribute name="DbType" type="xs:string" use="optional" />
  </xs:complexType>
  <xs:complexType name="TableFunctionParameter">
    <xs:attribute name="Parameter" type="xs:string" use="required" />
    <xs:attribute name="Member" type="xs:string" use="required" />
    <xs:attribute name="Version" type="Version" use="optional" />
  </xs:complexType>
  <xs:complexType name="TableFunctionReturn">
    <xs:attribute name="Member" type="xs:string" use="required" />
  </xs:complexType>
  <xs:complexType name="Connection">
    <xs:attribute name="Provider" type="xs:string" use="required" />
    <xs:attribute name="Mode" type="ConnectionMode" use="optional" />
    <xs:attribute name="ConnectionString" type="xs:string" use="optional" />
    <xs:attribute name="SettingsObjectName" type="xs:string" use="optional" />
    <xs:attribute name="SettingsPropertyName" type="xs:string" use="optional" />
  </xs:complexType>
  <xs:simpleType name="ConnectionMode">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ConnectionString" />
      <xs:enumeration value="AppSettings" />
      <xs:enumeration value="WebSettings" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="AccessModifier">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Public" />
      <xs:enumeration value="Internal" />
      <xs:enumeration value="Protected" />
      <xs:enumeration value="ProtectedInternal" />
      <xs:enumeration value="Private" />
    </xs:restriction>
  </xs:simpleType>
  <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="SerializationMode">
    <xs:restriction base="xs:string">
      <xs:enumeration value="None" />
      <xs:enumeration value="Unidirectional" />
    </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="Version">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Current" />
      <xs:enumeration value="Original" />
    </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:simpleType name="ClassModifier">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Sealed" />
      <xs:enumeration value="Abstract" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MemberModifier">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Virtual" />
      <xs:enumeration value="Override" />
      <xs:enumeration value="New" />
      <xs:enumeration value="NewVirtual" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="Cardinality">
    <xs:restriction base="xs:string">
      <xs:enumeration value="One" />
      <xs:enumeration value="Many" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

Der folgende Code entspricht einem Auszug aus der DBML-Datei, die aus der Beispieldatenbank Northwind erzeugt wurde. Sie können die gesamte Datei generieren, indem Sie SQLMetal mit der Option /xml verwenden. Weitere Informationen finden Sie unter SqlMetal.exe (Tool zur Codegenerierung).

<?xml version="1.0" encoding="utf-16"?>
<Database Name="northwnd" Class="Northwnd" xmlns="http://schemas.microsoft.com/dsltools/DLinqML">

  <Table Name="Customers">
    <Type Name="Customer">
      <Column Name="CustomerID" Type="System.String" DbType="NChar(5) NOT NULL" IsPrimaryKey="True" CanBeNull="False" />
      <Column Name="CompanyName" Type="System.String" DbType="NVarChar(40) NOT NULL" CanBeNull="False" />
      <Column Name="ContactName" Type="System.String" DbType="NVarChar(30)" CanBeNull="True" />
      <Column Name="ContactTitle" Type="System.String" DbType="NVarChar(30)" CanBeNull="True" />
      <Column Name="Address" Type="System.String" DbType="NVarChar(60)" CanBeNull="True" />
      <Column Name="City" Type="System.String" DbType="NVarChar(15)" CanBeNull="True" />
      <Column Name="Region" Type="System.String" DbType="NVarChar(15)" CanBeNull="True" />
      <Column Name="PostalCode" Type="System.String" DbType="NVarChar(10)" CanBeNull="True" />
      <Column Name="Country" Type="System.String" DbType="NVarChar(15)" CanBeNull="True" />
      <Column Name="Phone" Type="System.String" DbType="NVarChar(24)" CanBeNull="True" />
      <Column Name="Fax" Type="System.String" DbType="NVarChar(24)" CanBeNull="True" />
      <Association Name="FK_CustomerCustomerDemo_Customers" Member="CustomerCustomerDemos" ThisKey="CustomerID" OtherKey="CustomerID" OtherTable="CustomerCustomerDemo" DeleteRule="NO ACTION" />
      <Association Name="FK_Orders_Customers" Member="Orders" ThisKey="CustomerID" OtherKey="CustomerID" OtherTable="Orders" DeleteRule="NO ACTION" />
    </Type>
  </Table>
</Database>
Communityinhalt   Was ist Community Content?
Neuen Inhalt hinzufügen RSS  Anmerkungen
Processing
© 2012 Microsoft. Alle Rechte vorbehalten. Nutzungsbedingungen | Markenzeichen | Informationen zur Datensicherheit
Page view tracker