Le annotazioni sono degli attributi che possono essere applicati ad una entità o alle sue proprietà.

entities:
  - name: Category
    description: The product category
    useRepository: true
    repositoryName: Category
    annotations:
      - name: table.ejs
        namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/
        value: Categories
    fields:
      - name: name
        type: string
        description: The name of the category
        annotations:
          - name: key
            namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/

Questo andrà a generare una classe Category e, ad essa, verrà applicato l’attributo Table. La classe conterrà una proprietà Name alla quale sarà applicato l’attributo Key.

Le annotations hanno tre proprietà:

  • name: indica il nome del template (è possibile omettere l’estensione).
  • namespace: indica l’url su cui è presente il template (omettere il nome del template).
  • value: indica il valore dell’attributo (opzionale).

Ad esempio, nel caso precedente, il template verrà scaricato dall’url https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/key.ejs

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Ca.ShoppingCart.Store.Domain.Model
{
  /// <summary>
  /// The product category
  /// </summary>
  [Table("Categories")]
  public partial class Category : EntityBase
  {
    /// <summary>
    /// The name of the category
    /// </summary>
    [Key]
    public string Name
    {
      get;
      set;
    }
  }
}

Key

[Key] Può essere applicato ad una proprietà per rendere, la colonna corrispondente del database, una colonna PrimaryKey. Per ulteriori informazioni fare riferimento alla documentazione ufficiale.

Per generare questa annotazione

annotations:
  - name: key
    namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/

MaxLength

[MaxLength(20)] Può essere applicato ad una proprietà per specificare la lunghezza massima della stringa consentita nella colonna corrispondente nel database. Per ulteriori informazioni fare riferimento alla documentazione ufficiale.

Per generare questa annotazione

annotations:
  - name: maxLength
    namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/
    value: 20

MinLength

[MinLength(5)] Può essere applicato ad una proprietà per specificare la lunghezza minima della stringa consentita nella colonna corrispondente nel database. Per ulteriori informazioni fare riferimento alla documentazione ufficiale.

Per generare questa annotazione

annotations:
  - name: minLength
    namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/
    value: 5

Table

[Table("ClassName")] Può essere applicato ad una classe per configurare il nome della tabella e lo schema corrispondenti nel database. Per ulteriori informazioni fare riferimento alla documentazione ufficiale.

Per generare questa annotazione

annotations:
  - name: table
    namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/
    value: ClassName

Column

[Column("PropertyName")] Può essere applicato ad una proprietà per configurare il nome, l’ordine e il tipo di dati della colonna corrispondente nel database. Per ulteriori informazioni fare riferimento alla documentazione ufficiale.

Per generare questa annotazione

annotations:
  - name: column
    namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/
    value: PropertyName

ForeignKey

[ForeignKey("PropertyName")] Può essere applicato ad una proprietà per marcarla come chiave esterna. Per ulteriori informazioni fare riferimento alla documentazione ufficiale.

Per generare questa annotazione

annotations:
  - name: foreign-key
    namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/
    value: PropertyName

NotMapped

[NotMapped] Può essere applicato ad una proprietà o ad una classe che deve essere esclusa dalla generazione del modello e non deve generare la corrispondente colonna/tabella nel database. Per ulteriori informazioni fare riferimento alla documentazione ufficiale.

Per generare questa annotazione

annotations:
  - name: not-mapped
    namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/

DatabaseGenerated

[DatabaseGenerated(DatabaseGeneratedOption.None)] Può essere applicato ad una proprietà per indicare come il database sottostante dovrebbe generare il valore per la colonna corrispondente. Ammette tre valori: None, Identity, Computed. Nel caso in cui venga inserito un valore errato, verrà stampato un messaggio di log e sarà impostato None come valore di default. Per ulteriori informazioni fare riferimento alla documentazione ufficiale.

Per generare questa annotazione

annotations:
  - name: database-generated
    namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/
    value: Identity # Valori consentiti: None, Identity, Computed

InverseProperty

[InverseProperty("PropertyName")] Può essere applicato ad una proprietà per specificare l’inverso di una proprietà di navigazione, che rappresenta l’altrà estremità della stessa relazione. Per ulteriori informazioni fare riferimento alla documentazione ufficiale.

Per generare questa annotazione

annotations:
  - name: inverse-property
    namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/
    value: PropertyName

ComplexType

[ComplexType("ClassName")] Può essere applicato ad una classe per marcarla come tipo complesso. Per ulteriori informazioni fare riferimento alla documentazione ufficiale.

Per generare questa annotazione

annotations:
  - name: complex-type
    namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/
    value: PropertyName

Required

[Required] Può essere applicato ad una proprietà per specificare che la corrispondente colonna del database non può contenere valori nulli. Per ulteriori informazioni fare riferimento alla documentazione ufficiale.

Per generare questa annotazione

annotations:
  - name: required
    namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/