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

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).

Nell’esempio sottostante, il template verrà scaricato dall’url https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/database-generated.ejs

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

Questo andrà a generare una classe Category. La classe conterrà una proprietà Name alla quale sarà applicato l’attributo DatabaseGenerated contenente il valore specificato.

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

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

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