Visão geral
O Entity Framework Core permite que você trabalhe com dados em seu aplicação sem executar os comandos do banco de dados de dados explicitamente. Para consultar seus dados, use a sintaxe Query integrada da linguagem (LINQ). O LINQ permite que você escreva queries fortemente digitadas usando palavras-chave e operadores específicos do C#. Quando você executa o aplicação, o EF Core Provider traduz automaticamente as queries do LINQ e as executa no banco de banco de dados usando a MongoDB Query API.
Neste guia, você pode ver exemplos de operações de query comuns em um aplicação configurado para usar o EF Core Provider.
Dica
Para saber como configurar um aplicação para usar o fornecedor do EF Core, consulte Configurar o fornecedor do EF Core.
Encontrar entidades
Encontre uma única entidade usando o método FirstOrDefault()
ou encontre múltiplas entidades usando o método Where()
.
Encontre uma única entidade
O método FirstOrDefault()
retorna a primeira entidade que encontra na sua collection que corresponda aos critérios de pesquisa e retorna null
se nenhuma entidade correspondente for encontrada.
O código a seguir usa o método FirstOrDefault()
para localizar um planeta com o campo name
de "Mercury" de um DBSet
chamado Planets
e imprime o nome do planeta no console:
var planet = db.Planets.FirstOrDefault(p => p.name == "Mercury"); Console.WriteLine(planet.name);
Encontrar múltiplas entidades
Você pode utilizar o método Where()
para recuperar múltiplas entidades de sua collection. Where()
retorna todas as entidades que correspondem aos critérios de pesquisa.
O código a seguir usa o método Where()
para encontrar todos os planetas que têm o campo hasRings
definido como true
e imprime os nomes dos planetas no console.
var planets = db.Planets.Where(p => p.hasRings); foreach (var p in planets) { Console.WriteLine(p.name); }
Entidades de classificação
Utilize o método OrderBy()
para especificar uma ordem na qual retornar entidades de uma query. OrderBy()
classifica os elementos em ordem crescente com base em critérios de classificação especificados.
O código a seguir usa o método OrderBy()
para encontrar todos os planetas e classificá-los pelo valor do campo orderFromSun
em ordem crescente. Em seguida, ele imprime os resultados no console.
var planetList = db.Planets.OrderBy(p => p.orderFromSun); foreach (var p in planetList) { Console.WriteLine(p.name); }
Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune
Dica
Classificar em ordem decrescente
Você pode classificar os resultados de uma query em ordem decrescente utilizando o método OrderByDescending()
.
Você pode executar uma classificação secundária em sua query usando o método ThenBy()
. O método ThenBy()
classifica os resultados do método OrderBy()
em ordem crescente com base em critérios de classificação especificados. O método ThenBy()
deve ser encadeado ao método OrderBy()
.
Dica
Classificação secundária em ordem decrescente
Você pode executar uma classificação secundária em ordem decrescente usando o método ThenByDescending()
.
O código a seguir usa os métodos OrderBy()
e ThenBy()
para encontrar todos os planetas e classificá-los pelo campo hasRings()
, com uma classificação secundária no campo name
.
var planetList = db.Planets.OrderBy(o => o.hasRings).ThenBy(o => o.name); foreach (var p in planetList) { Console.WriteLine("Has rings: " + p.hasRings + ", Name: " + p.name); }
Has rings: False, Name: Earth Has rings: False, Name: Mars Has rings: False, Name: Mercury Has rings: False, Name: Venus Has rings: True, Name: Jupiter Has rings: True, Name: Neptune Has rings: True, Name: Saturn Has rings: True, Name: Uranus
Dica
Ao ordenar em campos com um valor booleano, as entidades com um valor de campo de false
são exibidas antes daquelas com um valor de true
.
Agregações escalares
O EF Core Provider oferece suporte aos seguintes métodos de agregação escalar:
Count()
: retorna o número de elementos em uma coleção ou o número de documentos que correspondem a um predicadoLongCount()
: retorna o número de elementos em uma coleção comolong
ou o número de documentos que correspondem a um predicadoAny()
: retornatrue
se algum elemento em uma coleção corresponder ao predicadoMax()
: retorna o valor máximo de um campo especificado em uma coleçãoMin()
: retorna o valor mínimo de um campo especificado em uma coleçãoSum()
: retorna a soma de valores de um campo especificado em uma coleçãoAverage()
: retorna a média de valores de um campo especificado em uma coleção
As seções a seguir mostram exemplos de cada um dos métodos anteriores.
Contar
O exemplo seguinte utiliza o método Count()
para contar o número de elementos na collection Planets
:
var planetCount = db.Planets.Count(); Console.WriteLine("Planet Count: " + planetCount);
O exemplo seguinte utiliza o método Count()
para contar o número de elementos na coleção Planets
que têm um campo hasRings
configurado para true
:
var planetCountWithRings = db.Planets.Count(p => p.hasRings); Console.WriteLine("Planet Count with Rings: " + planetCountWithRings);
LongCount
O exemplo seguinte utiliza o método LongCount()
para contar o número de elementos na coleção Planets
e retorna o resultado como um long
:
var planetCountLong = db.Planets.LongCount(); Console.WriteLine("Long Planet Count: " + longCount);
O exemplo seguinte utiliza o método LongCount()
para contar o número de elementos na coleção Planets
que têm um campo hasRings
configurado para true
e retorna o resultado como long
:
var planetCountLongWithRings = db.Planets.LongCount(p => p.hasRings); Console.WriteLine("Long Planet Count with Rings: " + planetCountLongWithRings);
Any
O exemplo seguinte utiliza o método Any()
para verificar se algum elemento na coleção Planets
tem um campo hasRings
configurado para true
:
var results = db.Planets.Any(p => p.hasRings); foreach (var p in results) { Console.WriteLine("Planet with Rings: " + p.name); }
Máx
O exemplo seguinte utiliza o método Max()
para localizar o valor máximo do campo orderFromSun
na collection Planets
:
var furthestPlanet = db.Planets.Max(p => p.orderFromSun); Console.WriteLine("Furthest Planet: " + furthestPlanet.name);
Min
O exemplo seguinte utiliza o método Min()
para localizar o valor mínimo do campo orderFromSun
na collection Planets
:
var closestPlanet = db.Planets.Min(p => p.OrderFromSun); Console.WriteLine("Closest Planet: " + closestPlanet.Name);
Soma
O exemplo a seguir utiliza o método Sum()
para localizar a soma do campo mass
na coleção Planets
:
var totalMass = db.Planets.Sum(p => p.mass); Console.WriteLine("Total Mass of Planets: " + totalMass);
Média
O exemplo seguinte utiliza o método Average()
para localizar o valor médio do campo mass
na collection Planets
:
var averageMass = db.Planets.Average(p => p.mass); Console.WriteLine("Average Mass of Planets: " + averageMass);
Informações adicionais
Para saber mais sobre aggregations no MongoDB, consulte o guia Operações de agregação no manual do MongoDB Server.
Para saber mais sobre os métodos discutidos nesta guia, consulte os seguintes links de documentação da API .NET: