Property 要素 (CSDL)
概念スキーマ定義言語 (CSDL) の Property 要素は、EntityType 要素、ComplexType 要素、または RowType 要素の子にすることができます。
EntityType 要素と ComplexType 要素のアプリケーション
Property 要素が EntityType 要素または ComplexType 要素の子である場合、Property 要素はエンティティ型または複合型のインスタンスに含まれるデータの構造と特性を定義します。概念モデルのプロパティは、クラスで定義されるプロパティに似ています。クラスのプロパティがクラスの構造を定義し、オブジェクトに関する情報を伝達するのと同様に、概念モデルのプロパティはエンティティ型の構造を定義し、エンティティ型のインスタンスに関する情報を伝達します。
Property 要素には、次の子要素をここに示す順序で含めることができます。
Documentation 要素 (0 または 1 つの要素を含めることができます)。
Annotation 要素 (0 個以上の要素を含めることができます)。
Property 要素に適用できるファセットは、Nullable、DefaultValue、MaxLength、FixedLength、Precision、Scale、Unicode、Collation、および ConcurrencyMode です。ファセットは、プロパティ値をデータ ストアに格納する方法に関する情報を提供する XML 属性です。詳細については、「ファセット (CSDL)」を参照してください。
注意
ファセットは、 EDMSimpleType 型のプロパティにのみ適用できます。詳細については、「概念モデルの型 (CSDL)」を参照してください。
適用可能な属性
次の表は、Property 要素に適用できる属性を示しています。
属性名 |
必須 |
値 |
---|---|---|
Name |
はい |
プロパティの名前。 |
Type |
はい |
プロパティ値の型。プロパティ値の型は、モデルのスコープ内の EDMSimpleType または複合型 (完全修飾名で示される) である必要があります。詳細については、「概念モデルの型 (CSDL)」を参照してください。 |
Nullable |
いいえ |
プロパティに null 値を割り当てることができるかどうかにより、True (既定値) または False。
注
https://schemas.microsoft.com/ado/2006/04/edm 名前空間で示された CSDL のバージョンでは、複合型のプロパティは Nullable="False" である必要があります。
|
DefaultValue |
いいえ |
プロパティの既定値。 |
MaxLength |
いいえ |
プロパティ値の最大長。 |
FixedLength |
いいえ |
プロパティ値が固定長の文字列として格納されるかどうかにより、True または False。 |
Precision |
いいえ |
プロパティ値の有効桁数。 |
Scale |
いいえ |
プロパティ値の小数点以下桁数。 |
Unicode |
いいえ |
プロパティ値が Unicode 文字列として格納されるかどうかにより、True または False。 |
Collation |
いいえ |
データ ソースで使用する照合順序を指定する文字列。 |
ConcurrencyMode |
いいえ |
None (既定値) または Fixed。値を Fixed に設定すると、オプティミスティック同時実行チェックでプロパティ値が使用されます。 |
注意
Property 要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属さない場合があります。カスタム属性の完全修飾名は一意である必要があります。
例
次の例は、3 つの Property 要素を持つ EntityType 要素を示しています。
<EntityType Name="Book">
<Key>
<PropertyRef Name="ISBN" />
</Key>
<Property Type="String" Name="ISBN" Nullable="false" />
<Property Type="String" Name="Title" Nullable="false" />
<Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
<NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
FromRole="Book" ToRole="Publisher" />
<NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
FromRole="Book" ToRole="Author" />
</EntityType>
次の例は、5 つの Property 要素を持つ ComplexType 要素を示しています。
<ComplexType Name="Address" >
<Property Type="String" Name="StreetAddress" Nullable="false" />
<Property Type="String" Name="City" Nullable="false" />
<Property Type="String" Name="StateOrProvince" Nullable="false" />
<Property Type="String" Name="Country" Nullable="false" />
<Property Type="String" Name="PostalCode" Nullable="false" />
</ComplexType>
RowType 要素のアプリケーション
Property 要素が RowType 要素の子である場合、Property 要素はモデル定義関数との間で受け渡しできるデータの構造と特性を定義します。詳細については、「Function 要素 (CSDL)」を参照してください。
Property 要素には、次の子要素のうち 1 つのみを含めることができます。
Property 要素には、任意の数の子 annotation 要素を含めることができます。
注意
annotation 要素は、.NET Framework バージョン 4 以降を対象としたアプリケーションの概念モデルでのみ使用できます。このようなモデルの XML 名前空間は、https://schemas.microsoft.com/ado/2008/09/edm です。
適用可能な属性
次の表は、Property 要素に適用できる属性を示しています。
属性名 |
必須 |
値 |
---|---|---|
Name |
はい |
プロパティの名前。 |
Type |
はい |
プロパティ値の型。 |
Nullable |
いいえ |
プロパティに null 値を割り当てることができるかどうかにより、True (既定値) または False。
注
https://schemas.microsoft.com/ado/2006/04/edm 名前空間で示された CSDL のバージョンでは、複合型のプロパティは Nullable="False" である必要があります。
|
DefaultValue |
いいえ |
プロパティの既定値。 |
MaxLength |
いいえ |
プロパティ値の最大長。 |
FixedLength |
いいえ |
プロパティ値が固定長の文字列として格納されるかどうかにより、True または False。 |
Precision |
いいえ |
プロパティ値の有効桁数。 |
Scale |
いいえ |
プロパティ値の小数点以下桁数。 |
Unicode |
いいえ |
プロパティ値が Unicode 文字列として格納されるかどうかにより、True または False。 |
Collation |
いいえ |
データ ソースで使用する照合順序を指定する文字列。 |
注意
Property 要素には、任意の数の annotation 属性 (カスタム XML 属性) を適用できます。ただし、カスタム属性は CSDL 用に予約されたどの XML 名前空間にも属さない場合があります。カスタム属性の完全修飾名は一意である必要があります。
例
モデル定義関数の戻り値の型の構造を定義するために使用される Property 要素の例を次に示します。
<Function Name="LastNamesAfter">
<Parameter Name="someString" Type="Edm.String" />
<ReturnType>
<CollectionType>
<RowType>
<Property Name="FirstName" Type="Edm.String" Nullable="false" />
<Property Name="LastName" Type="Edm.String" Nullable="false" />
</RowType>
</CollectionType>
</ReturnType>
<DefiningExpression>
SELECT VALUE ROW(p.FirstName, p.LastName)
FROM SchoolEntities.People AS p
WHERE p.LastName >= somestring
</DefiningExpression>
</Function>