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/inverse-property.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: inverse-property
            namespace: https://schemacodearchitects.blob.core.windows.net/templates/entityfwk/
            value: Value

Questo andrà a generare una classe Category. La classe conterrà una proprietà Name alla quale sarà applicato l’attributo InverseProperty 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>
    [InverseProperty("Value")]
    public string Name
    {
      get;
      set;
    }
  }
}

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