Schema 要素 (SSDL)
ストア スキーマ定義言語 (SSDL) の Schema 要素は、ストレージ モデル定義のルート要素です。ストレージ モデルを構成するオブジェクト、関数、およびコンテナーの定義を格納します。
Schema 要素には、0 個以上の次の子要素を含めることができます。
Schema 要素は、Namespace 属性を使用してストレージ モデルのエンティティ型とアソシエーション オブジェクトの名前空間を定義します。1 つの名前空間内で 2 つのオブジェクトが同じ名前を持つことはできません。
ストレージ モデル名前空間は、Schema 要素の XML 名前空間とは異なります。ストレージ モデル名前空間 (Namespace 属性で定義) は、エンティティ型とアソシエーション型の論理コンテナーです。Schema 要素の XML 名前空間 (xmlns 属性で示される) は、Schema 要素の子要素と属性の既定の名前空間です。フォーム https://schemas.microsoft.com/ado/YYYY/MM/edm/ssdl (YYYY と MM は、それぞれ年と月を表します) の XML 名前空間は、SSDL 用に予約されています。カスタム要素と属性は、このフォームがある名前空間に存在することはできません。
適用可能な属性
Schema 要素に適用できる属性を次の表に示します。
属性名 |
必須 |
値 |
---|---|---|
Namespace |
はい |
ストレージ モデルの名前空間。Namespace 属性の値は、型の完全修飾名を形成するために使用されます。たとえば、Customer という名前の EntityType が ExampleModel.Store 名前空間にある場合、この EntityType の完全修飾名は ExampleModel.Store.Customer です。 Namespace 属性の値として、文字列 System、Transient、または Edm を使用することはできません。Namespace 属性の値を CSDL Schema 要素の Namespace 属性の値と同じにすることはできません。 |
Alias |
いいえ |
名前空間の名前の代わりに使用される識別子。たとえば、Customer という名前の EntityType が、ExampleModel.Store 名前空間にあり、Alias 属性の値が StorageModel である場合、StorageModel.Customer を EntityType. の完全修飾名として使用できます。 |
Provider |
有効 |
データ プロバイダー。詳細については、「Entity Framework データ プロバイダー」を参照してください。 |
ProviderManifestToken |
はい |
返すプロバイダー マニフェストをプロバイダーに示すトークン。トークンの形式は定義されていません。トークンの値は、プロバイダーで定義されています。SQL Server プロバイダー マニフェスト トークンの詳細については、「Entity Framework 用 SqlClient」を参照してください。 |
例
次の例は、1 つの EntityContainer 要素、2 つの EntityType 要素、および 1 つの Association 要素を持つ Schema 要素を示します。
<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>