facet (Entity Data Model)
Un facet viene utilizzato per aggiungere dettagli a una definizione di proprietà di tipo primitivo. Una definizione di proprietà contiene informazioni sul tipo di proprietà, ma sono necessari ulteriori dettagli. Un tipo di entità in un modello concettuale, ad esempio, potrebbe disporre di una proprietà di tipo String il cui valore non può essere impostato su null. I facet consentono di specificare questo livello di dettaglio.
Nella tabella seguente vengono descritti i facet supportati in EDM.
Nota: |
---|
I valori e i comportamenti esatti dei facet sono determinati dall'ambiente di runtime che utilizza un'implementazione EDM. |
Facet | Descrizione | Si applica a |
---|---|---|
Collation |
Specifica la sequenza di ordinamento da utilizzare quando si eseguono operazioni di confronto e di ordinamento su valori della proprietà. |
String |
ConcurrencyMode |
Indica che il valore della proprietà deve essere utilizzato per le verifiche della concorrenza ottimistica. |
Tutte le proprietà di tipo primitivo |
Default |
Specifica il valore predefinito della proprietà se durante la creazione di istanze non viene fornito alcun valore. |
Tutte le proprietà di tipo primitivo |
FixedLength |
Specifica se la lunghezza del valore della proprietà può variare. |
Binary, String |
MaxLength |
Specifica la lunghezza massima del valore della proprietà. |
Binary, String |
Nullable |
Specifica se la proprietà può avere un valore null. |
Tutte le proprietà di tipo primitivo |
Precision |
Per le proprietà di tipo Decimal, specifica il numero di cifre che un valore della proprietà può avere. Per le proprietà di tipo Time, DateTime e DateTimeOffset, specifica il numero di cifre per la parte frazionaria di secondi del valore della proprietà. |
DateTime, DateTimeOffset, Decimal, Time, |
Scale |
Specifica il numero di cifre a destra del separatore decimale per il valore della proprietà. |
Decimal |
Unicode |
Indica se il valore della proprietà viene archiviato come Unicode. |
String |
Esempio
ADO.NET Entity Framework utilizza un linguaggio specifico di dominio detto CSDL (Conceptual Schema Definition Language) per definire i modelli concettuali. Nel linguaggio CSDL seguente viene definito un tipo di entità Book. Si noti che i facet vengono implementati come attributi XML. I valori dei facet indicano che nessuna proprietà può essere impostata su null e che Scale e Precision della proprietà Revision sono entrambi impostati su 29.
<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>