Tipos de constructores (Entity SQL)

Entity SQL proporciona tres tipos de constructores: ROW, de tipos con nombre y de colecciones.

Constructores ROW

Debe utilizar constructores ROW en Entity SQL para crear registros anónimos escritos estructuralmente de uno o varios valores. El tipo de resultado de un constructor ROW es un tipo de fila cuyos tipos de campo corresponden a los tipos de los valores que se utilizaron para crear la fila. Por ejemplo, la expresión siguiente crea un valor de tipo Record(a int, b string, c int):

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

Si no proporciona un alias para una expresión en un constructor ROW, Entity Framework intentará generar uno. Para más información, consulte la sección sobre reglas de alias en Identificadores.

Las reglas siguientes se aplican a expresiones que usan alias en un constructor ROW:

  • Las expresiones en un constructor ROW no pueden hacer referencia a otros alias del mismo constructor.
  • Dos expresiones en el mismo constructor ROW no pueden tener el mismo alias.

Para más información sobre los constructores de fila, consulte ROW.

Constructores de colecciones

Los constructores de colecciones de Entity SQL se usan para crear una instancia de un elemento multiset a partir de una lista de valores. Todos los valores del constructor deben ser del tipo T mutuamente compatible y el constructor genera una colección de tipo Multiset<T>. Por ejemplo, la expresión siguiente crea una colección de enteros:

Multiset(1, 2, 3)

{1, 2, 3}

No se permiten los constructores multiset vacíos porque no se puede determinar el tipo de los elementos. Lo siguiente no es válido:

multiset() {}

Para más información, consulte MULTISET.

Constructores de tipos con nombre (inicializadores NamedType)

Entity SQL permite a los constructores de tipos (inicializadores) crear instancias de tipos complejos con nombre y de tipos de entidad. Por ejemplo, la expresión siguiente crea una instancia de un tipo Person.

Person("abc", 12)

La expresión siguiente crea una instancia de un tipo complejo.

MyModel.ZipCode('98118', '4567')

La expresión siguiente crea una instancia de un tipo complejo anidado.

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

La expresión siguiente crea una instancia de una entidad con un tipo complejo anidado.

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

En el ejemplo siguiente se muestra cómo inicializar una propiedad de un tipo complejo en NULL. MyModel.ZipCode('98118', null)

Los argumentos del constructor se supone que están en el mismo orden que en la declaración de los atributos del tipo.

Para más información, consulte Constructores de tipos con nombre.

Vea también