Compartilhar via


Criando tipos (Entity SQL)

O Entity SQL fornece três tipos de construtores: construtores de linha, construtores de tipo nomeado e construtores de coleção.

Coloque construtores

Você usa construtores de linha no Entity SQL para construir registros anônimos, estruturalmente tipados de um ou mais valores. O tipo do resultado de um construtor de linha é um tipo de linha cujos tipos de campo correspondem aos tipos de valores usados para construir a linha. Por exemplo, a seguinte expressão constrói um valor do tipo Record(a int, b string, c int):

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

Se você não fornecer um alias para um construtor de expressão em seguida, Entity Framework tentará gerar um. Para obter mais informações, confira a seção “Regras de alias” em Identificadores.

As seguintes regras se aplicam para o construtor de serrilha de expressão em uma linha:

  • O construtor das expressões em uma linha não pode referenciar outras alias no mesmo construtor.
  • Duas expressões no mesmo construtor de linha não podem ter as mesmas alias.

Para obter mais informações sobre construtores de linha, confira ROW.

Construtores de coleção

Você usa construtores de coleção no Entity SQL para criar uma instância de um multiset de uma lista de valores. Todos os valores no construtor deve ser do tipo correspondente mutuamente T, e o construtor gerenciar uma coleção do tipo Multiset<T>. Por exemplo, a expressão a seguir cria uma coleção de inteiros:

Multiset(1, 2, 3)

{1, 2, 3}

Não são permitidos construtores vazios de multiset porque o tipo dos elementos não pode ser determinado. O seguinte é válido:

multiset() {}

Para obter mais informações, confira MULTISET.

Construtores nomes de tipo (inicializadores de NamedType)

O Entity SQL permite que os construtores de tipo (inicializadores) criar instâncias de tipos complexos nomeados e tipos de entidade. Por exemplo, a expressão a seguir cria uma instância de um tipo de Person .

Person("abc", 12)

A expressão a seguir cria uma instância de um tipo complexo.

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

A expressão a seguir cria uma instância de um tipo complexo aninhado.

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

A expressão a seguir cria uma instância de um objeto com um tipo complexo aninhado.

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

O exemplo a seguir mostra como inicializar uma propriedade de um tipo complexo para nulo. MyModel.ZipCode('98118', null)

Os argumentos para o construtor são considerados para estar na mesma ordem que a declaração de atributos de tipo.

Para obter mais informações, confira Construtor de tipo nomeado.

Confira também