proprietà (Entity Data Model)
Le proprietà sono i blocchi predefiniti fondamentali dei tipi di entità e dei tipi complessi. Le proprietà definiscono la forma e le caratteristiche dei dati che saranno contenuti in un'istanza di un tipo di entità o in un'istanza di un tipo complesso. Le proprietà in un modello concettuale sono analoghe alle proprietà definite su una classe. Nello stesso modo in cui le proprietà su una classe definiscono la forma della classe e forniscono informazioni su oggetti, le proprietà in un modello concettuale definiscono la forma di un tipo di entità e forniscono informazioni su istanze del tipo di entità.
Nota: |
---|
Le proprietà descritte in questo argomento sono diverse dalle proprietà di navigazione.Per ulteriori informazioni, vedere proprietà di navigazione. |
Una definizione di proprietà contiene le informazioni seguenti:
Un nome di proprietà (obbligatorio).
Un tipo di proprietà (obbligatorio).
Un set di facet (facoltativo).
Una proprietà può contenere dati primitivi (ad esempio una stringa, un Integer o un valore booleano) o dati strutturati (ad esempio un tipo complesso). Le proprietà di tipo primitivo sono dette anche proprietà scalari. Per ulteriori informazioni, vedere Entity Data Model: tipi di dati primitivi.
Nota: |
---|
Un tipo complesso può, di per sé, disporre di proprietà che sono tipi complessi. |
Esempio
Nel diagramma seguente viene illustrato un modello concettuale con tre tipi di entità: Book, Publisher e Author. Ogni tipo di entità dispone di diverse proprietà, anche se nel diagramma non sono contenute informazioni sul tipo per ogni proprietà. Le proprietà che sono chiavi di entità vengono indicate con (Key).
ADO.NET Entity Framework utilizza un linguaggio specifico di dominio detto CSDL (Conceptual Schema Definition Language) per definire i modelli concettuali. Il seguente linguaggio CSDL definisce il tipo di entità Book (come illustrato nel diagramma precedente) e indica il tipo e il nome di ogni proprietà utilizzando attributi XML. Un facet facoltativo, Nullable, è definito anche tramite un attributo XML.
<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>
È possibile che una delle proprietà illustrate nel diagramma sia una proprietà di tipo complesso. La proprietà Address sul tipo di entità Publisher, ad esempio, potrebbe essere una proprietà di tipo complesso costituita da diverse proprietà scalari, quali StreetAddress, City, StateOrProvince, Country e PostalCode. La rappresentazione CSDL di tale tipo complesso sarà come segue:
<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>