Elemento Schema (SSDL)
L'elemento Schema in SSDL (Store Schema Definition Language) rappresenta l'elemento radice di una definizione del modello di archiviazione.Contiene definizioni per gli oggetti, le funzioni e i contenitori che costituiscono un modello di archiviazione.
L'elemento Schema può contenere zero o più dei seguenti elementi figlio:
L'elemento Schema utilizza l'attributo Namespace per definire lo spazio dei nomi per il tipo di entità e gli oggetti di associazione in un modello di archiviazione.All'interno di uno spazio dei nomi due oggetti non possono avere lo stesso nome.
Uno spazio dei nomi del modello di archiviazione è diverso dallo spazio dei nomi XML dell'elemento Schema.Uno spazio dei nomi del modello di archiviazione (secondo quanto definito dall'attributo Namespace) è un contenitore logico per tipi di entità e tipi di associazione.Lo spazio dei nomi XML (indicato dall'attributo xmlns) di un elemento Schema è lo spazio dei nomi predefinito per gli elementi figlio e gli attributi dell'elemento Schema.Gli spazi dei nomi XML del form https://schemas.microsoft.com/ado/YYYY/MM/edm/ssdl (dove YYYY e MM rappresentano rispettivamente l'anno e il mese) sono riservati al linguaggio SSDL.Gli elementi e gli attributi personalizzati non possono essere in spazi dei nomi che hanno questo form.
Attributi applicabili
Nella tabella riportata di seguito vengono descritti gli attributi che è possibile applicare all'elemento Schema.
Nome attributo |
È obbligatorio |
Valore |
---|---|---|
Namespace |
Sì |
Spazio dei nomi del modello di archiviazione.Il valore dell'attributo Namespace viene utilizzato per formare il nome completo di un tipo.Ad esempio, se un elemento EntityType denominato Customer si trova nello spazio dei nomi ExampleModel.Store, il nome completo di EntityType sarà ExampleModel.Store.Customer. Non è possibile utilizzare le stringhe seguenti come valori per l'attributo Namespace: System, Transient o Edm.Il valore per l'attributo Namespace non può essere uguale al valore per l'attributo Namespace nell'elemento dello schema CSDL. |
Alias |
No |
Identificatore utilizzato al posto del nome dello spazio dei nomi.Ad esempio, se un elemento EntityType denominato Customer si trova nello spazio dei nomi ExampleModel.Store e il valore dell'attributo Alias è StorageModel, sarà possibile utilizzare StorageModel.Customer come nome completo di EntityType. |
Provider |
Sì |
Provider di dati.Per ulteriori informazioni, vedere Provider di dati Entity Framework. |
ProviderManifestToken |
Sì |
Token che indica al provider quale manifesto del provider restituire.Non è definito alcun formato per il token.I valori per il token sono definiti dal provider.Per informazioni sui token del manifesto del provider SQL Server, vedere SqlClient per Entity Framework. |
Esempio
Nell'esempio seguente viene mostrato un elemento Schema che contiene un elemento EntityContainer, due elementi EntityType e un elemento Association.
<Schema Namespace="ExampleModel.Store"
Alias="Self" Provider="System.Data.SqlClient"
ProviderManifestToken="2008"
xmlns="https://schemas.microsoft.com/ado/2009/02/edm/ssdl">
<EntityContainer Name="ExampleModelStoreContainer">
<EntitySet Name="Customers"
EntityType="ExampleModel.Store.Customers"
Schema="dbo" />
<EntitySet Name="Orders"
EntityType="ExampleModel.Store.Orders"
Schema="dbo" />
<AssociationSet Name="FK_CustomerOrders"
Association="ExampleModel.Store.FK_CustomerOrders">
<End Role="Customers" EntitySet="Customers" />
<End Role="Orders" EntitySet="Orders" />
</AssociationSet>
</EntityContainer>
<EntityType Name="Customers">
<Documentation>
<Summary>Summary here.</Summary>
<LongDescription>Long description here.</LongDescription>
</Documentation>
<Key>
<PropertyRef Name="CustomerId" />
</Key>
<Property Name="CustomerId" Type="int" Nullable="false" />
<Property Name="Name" Type="nvarchar(max)" Nullable="false" />
</EntityType>
<EntityType Name="Orders" xmlns:c="http://CustomNamespace">
<Key>
<PropertyRef Name="OrderId" />
</Key>
<Property Name="OrderId" Type="int" Nullable="false"
c:CustomAttribute="someValue"/>
<Property Name="ProductId" Type="int" Nullable="false" />
<Property Name="Quantity" Type="int" Nullable="false" />
<Property Name="CustomerId" Type="int" Nullable="false" />
<c:CustomElement>
Custom data here.
</c:CustomElement>
</EntityType>
<Association Name="FK_CustomerOrders">
<End Role="Customers"
Type="ExampleModel.Store.Customers" Multiplicity="1">
<OnDelete Action="Cascade" />
</End>
<End Role="Orders"
Type="ExampleModel.Store.Orders" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Customers">
<PropertyRef Name="CustomerId" />
</Principal>
<Dependent Role="Orders">
<PropertyRef Name="CustomerId" />
</Dependent>
</ReferentialConstraint>
</Association>
<Function Name="UpdateOrderQuantity"
Aggregate="false"
BuiltIn="false"
NiladicFunction="false"
IsComposable="false"
ParameterTypeSemantics="AllowImplicitConversion"
Schema="dbo">
<Parameter Name="orderId" Type="int" Mode="In" />
<Parameter Name="newQuantity" Type="int" Mode="In" />
</Function>
<Function Name="UpdateProductInOrder" IsComposable="false">
<CommandText>
UPDATE Orders
SET ProductId = @productId
WHERE OrderId = @orderId;
</CommandText>
<Parameter Name="productId"
Mode="In"
Type="int"/>
<Parameter Name="orderId"
Mode="In"
Type="int"/>
</Function>
</Schema>
Vedere anche
Concetti
Panoramica su Entity Framework