Mapping tra vincoli XML Schema (XSD) univoci e vincoli di datasetMap unique XML Schema (XSD) Constraints to DataSet Constraints

In uno schema di XML Schema definition language (XSD), il univoco elemento specifica il vincolo di univocità su un elemento o attributo.In an XML Schema definition language (XSD) schema, the unique element specifies the uniqueness constraint on an element or attribute. Durante il processo di conversione di un XML Schema in uno schema relazionale, viene eseguito il mapping del vincolo univoco specificato su un elemento o un attributo dell'XML Schema a un vincolo univoco del tipo DataTable nel tipo DataSet corrispondente generato.In the process of translating an XML Schema into a relational schema, the unique constraint specified on an element or attribute in the XML Schema is mapped to a unique constraint in the DataTable in the corresponding DataSet that is generated.

Nella tabella seguente vengono illustrati il msdata gli attributi che è possibile specificare nel univoco elemento.The following table outlines the msdata attributes that you can specify in the unique element.

Nome attributoAttribute name DescrizioneDescription
msdata:ConstraintNamemsdata:ConstraintName Se questo attributo viene specificato, il relativo valore viene usato come nome del vincolo.If this attribute is specified, its value is used as the constraint name. In caso contrario, il nome attributo fornisce il valore del nome del vincolo.Otherwise, the name attribute provides the value of the constraint name.
msdata:PrimaryKeymsdata:PrimaryKey Se PrimaryKey="true" è presente nel univoco elemento, un vincolo unique viene creato con il IsPrimaryKey proprietà impostata su true.If PrimaryKey="true" is present in the unique element, a unique constraint is created with the IsPrimaryKey property set to true.

Nell'esempio seguente viene illustrato un XML Schema che utilizza il univoco elemento per specificare un vincolo di univocità.The following example shows an XML Schema that uses the unique element to specify a uniqueness constraint.

<xs:schema id="SampleDataSet"   
            xmlns:xs="http://www.w3.org/2001/XMLSchema"   
            xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">  
  <xs:element name="Customers">  
    <xs:complexType>  
      <xs:sequence>  
        <xs:element name="CustomerID" type="xs:integer"   
           minOccurs="0"/>  
        <xs:element name="CompanyName" type="xs:string"   
           minOccurs="0"/>  
       <xs:element name="Phone" type="xs:string" />  
     </xs:sequence>  
   </xs:complexType>  
 </xs:element>  

 <xs:element name="SampleDataSet" msdata:IsDataSet="true">  
  <xs:complexType>  
    <xs:choice maxOccurs="unbounded">  
      <xs:element ref="Customers" />  
    </xs:choice>  
  </xs:complexType>  
   <xs:unique     msdata:ConstraintName="UCustID"     name="UniqueCustIDConstr" >       <xs:selector xpath=".//Customers" />       <xs:field xpath="CustomerID" />     </xs:unique>  
</xs:element>  
</xs:schema>  

Il univoco elemento dello schema specifica che per tutti i clienti elementi in un documento di istanza, il valore della CustomerID elemento figlio deve essere univoco.The unique element in the schema specifies that for all Customers elements in a document instance, the value of the CustomerID child element must be unique. Nella creazione di DataSet, il processo di mapping legge questo schema e genera la tabella seguente:In building the DataSet, the mapping process reads this schema and generates the following table:

Customers (CustomerID, CompanyName, Phone)  

Il processo di mapping crea inoltre un vincolo unique nel CustomerID colonna, come illustrato di seguito DataSet.The mapping process also creates a unique constraint on the CustomerID column, as shown in the following DataSet. Per semplicità vengono mostrate solo le proprietà rilevanti.(For simplicity, only relevant properties are shown.)

      DataSetName: MyDataSet  
TableName: Customers  
  ColumnName: CustomerID  
      AllowDBNull: True  
      Unique: True  
  ConstraintName: UcustID       Type: UniqueConstraint  
      Table: Customers  
      Columns: CustomerID   
      IsPrimaryKey: False  

Nel DataSet generato, il IsPrimaryKey è impostata su False per il vincolo univoco.In the DataSet that is generated, the IsPrimaryKey property is set to False for the unique constraint. Il univoco proprietà sulla colonna indica che il CustomerID valori di colonna devono essere univoci (ma possono anche essere un riferimento null, come specificato da di AllowDBNull proprietà della colonna).The unique property on the column indicates that the CustomerID column values must be unique (but they can be a null reference, as specified by the AllowDBNull property of the column).

Se si modifica lo schema e impostare l'opzione facoltativa msdata: PrimaryKey valore di attributo True, viene creato il vincolo unique nella tabella.If you modify the schema and set the optional msdata:PrimaryKey attribute value to True, the unique constraint is created on the table. Il AllowDBNull colonna è impostata su Falsee IsPrimaryKey proprietà del vincolo viene impostato su True, rendendo il CustomerID colonna di una colonna chiave primaria.The AllowDBNull column property is set to False, and the IsPrimaryKey property of the constraint set to True, thus making the CustomerID column a primary key column.

È possibile specificare un vincolo univoco per una combinazione di elementi o attributi nell'XML Schema.You can specify a unique constraint on a combination of elements or attributes in the XML Schema. Nell'esempio seguente viene illustrato come specificare che una combinazione di CustomerID e CompanyName valori devono essere univoci per tutti i clienti in qualsiasi istanza da aggiunta di un altro xs: field elemento nello schema.The following example demonstrates how to specify that a combination of CustomerID and CompanyName values must be unique for all Customers in any instance, by adding another xs:field element in the schema.

      <xs:unique     
         msdata:ConstraintName="SomeName"    
         name="UniqueCustIDConstr" >   
  <xs:selector xpath=".//Customers" />   
  <xs:field xpath="CustomerID" />   
  <xs:field xpath="CompanyName" />   
</xs:unique>  

Questo è il vincolo che viene creato nella finestra di DataSet.This is the constraint that is created in the resulting DataSet.

ConstraintName: SomeName  
  Table: Customers  
  Columns: CustomerID CompanyName   
  IsPrimaryKey: False  

Vedere ancheSee Also

Mapping tra vincoli XML Schema (XSD) e vincoli di DataSetMapping XML Schema (XSD) Constraints to DataSet Constraints
Generazione di relazioni tra DataSet da XML Schema (XSD)Generating DataSet Relations from XML Schema (XSD)
Provider gestiti ADO.NET e Centro per sviluppatori di set di datiADO.NET Managed Providers and DataSet Developer Center