型の制約 (EDM)
エンティティ データ モデル (EDM) では、エンティティ型のプロパティに対して制約を指定できます。制約により、プロパティの設定可能な値を制限したり、プロパティに設定された値が、正しいデータ型であるかどうかや、アプリケーションのビジネス要件に対して有効であるかどうかを検証したりできます。
NULL 許容制約
Nullable 制約はすべてのプロパティに適用できます。Nullable 制約は、プロパティを Null
(値が割り当てられていない状態) にできるかどうかを指定するものであり、最も単純な制約の 1 つです。
エンティティの Key プロパティは、アプリケーション内の型のインスタンスを識別するために使用されます。エンティティを作成する際は、必ず Key プロパティの値を割り当てる必要があります。Key を持つエンティティのプロパティでは、Nullable 制約が常に必要となります。Nullable 制約を false に設定することで、識別子のないエンティティのインスタンス化を防ぐことができます。
次のスキーマでは、Person 型のプロパティに対して Nullable 制約を指定しています。EMailID
プロパティを Null
にすることはできますが、Name
には必ず値を割り当てる必要があります。そのようにしなかった場合、その型をストレージに保存する際に、ランタイム エラーが発生します。
<EntityType Name="Person">
<Key>
<PropertyRef Name="Name" />
</Key>
<Property Name="Name" Type="String" Nullable="false" />
<Property Name="EmailID" Type="String" Nullable="false" />
<Property Name="Address" Type="AddressType" Nullable="true" />
<Property Name="PhoneNumber" Type="String" />
</EntityType>
SQL Server の時点では、Null
属性の既定値は true
です。この例の Address
プロパティおよび PhoneNumber
プロパティは、どちらも割り当てられていない状態が許容されます。
既定の属性
Default 属性は、エンティティのインスタンスの作成時にプロパティの値を指定しなかった場合に使用されるプロパティの値を指定します。次の例では、Customer
の新しいインスタンスの作成時に値が指定されなかった場合、Locale
プロパティの値は既定の NW Region
になります。
<EntityType Name="Customer">
<Key>
<PropertyRef Name="CustomerId" />
</Key>
<Property Name="CustomerId" Type="String" Nullable="false" />
<Property Name="Name" Type="String" Nullable="false" />
<Property Name="Locale" Type="String" Default="NW Region"/>
<!--Other Properties-->
</EntityType>