Partager via


Opérateurs de constructeur de type (Entity SQL)

Entité SQL propose trois types de constructeurs : constructeurs de ligne, constructeurs de collection et constructeurs de type nommé.

Constructeurs de ligne

Les constructeurs de ligne s'avèrent utiles dans Entité SQL pour construire des enregistrements anonymes structurellement typés à partir d'une ou plusieurs valeurs. Le type de résultat d'un constructeur de ligne est un type de ligne dont les types de champs correspondent aux types des valeurs qui ont servi à construire la ligne. Par exemple, l'expression suivante construit une valeur de type Record(a int, b string, c int) :

ROW(1 AS a, "abc" AS b, a + 34 AS c)

Si vous ne fournissez pas d'alias pour une expression contenue dans un constructeur de ligne, Entity Framework essaie d'en générer un. Pour plus d'informations, voir la section « Règles d'alias » dans Identificateurs (Entity SQL).

Les règles suivantes s'appliquent à l'utilisation d'alias dans les expressions d'un constructeur de ligne :

  • les expressions contenues dans un constructeur de ligne ne peuvent pas faire référence aux autres alias du même constructeur ;

  • deux expressions contenues dans un même constructeur de ligne ne peuvent pas avoir le même alias.

Pour plus d'informations sur les constructeurs de ligne, voir ROW (Entity SQL).

Constructeurs de collection

Les constructeurs de collection d'Entité SQL permettent de créer une instance d'un multiensemble à partir d'une liste de valeurs. Toutes les valeurs du constructeur doivent être de type T mutuellement compatible et le constructeur produit une collection de type Multiset<T>. Par exemple, l'expression suivante crée une collection d'entiers :

Multiset(1, 2, 3)

{1, 2, 3}

Les constructeurs multiensembles vides ne sont pas autorisés, car le type des éléments ne peut pas être déterminé. L'exemple suivant n'est pas valide :

multiset() {}

Pour plus d'informations, voir MULTISET (Entity SQL).

Constructeurs de type nommé (initialiseurs NamedType)

Entité SQL permet aux constructeurs de type (initialiseurs) de créer des instances de types complexes nommés et de types d'entités. Par exemple, l'expression suivante crée une instance d'un type Person.

Person("abc", 12)

L'expression suivante crée une instance d'un type complexe.

MyModel.ZipCode(‘98118’, ‘4567’)

L'expression suivante crée une instance d'un type complexe imbriqué.

MyModel.AddressInfo('My street address', 'Seattle', 'WA', MyModel.ZipCode('98118', '4567'))

L'expression suivante crée une instance d'une entité avec un type complexe imbriqué.

MyModel.Person("Bill", MyModel.AddressInfo('My street address', 'Seattle', 'WA', MyModel.ZipCode('98118', '4567')))

L'exemple suivant montre comment initialiser une propriété d'un type complexe en valeur Null. MyModel.ZipCode(‘98118’, null)

Les arguments passés au constructeur sont supposés se trouver dans le même ordre que dans la déclaration des attributs du type.

Pour plus d'informations, voir Constructeur de type nommé (Entity SQL).

Voir aussi

Concepts

Référence Entity SQL
Vue d'ensemble d'Entity SQL
Système de type (Entity SQL)