Trabalhando com objetos relacionados a dados no código
LightSwitch gera objetos e membros que descrevem seus dados.Os nomes desses objetos e membros correspondem aos nomes dos itens na sua solução.Por exemplo, se você adicionar uma tabela denominada Customer, LightSwitch gera um objeto chamado Customer.Este tópico descreve cada tipo de objeto que é gerado pelo LightSwitch.Para ver exemplos de códigos que usam esses objetos e membros para executar tarefas comuns relacionadas a dados, consulte Executar tarefas relacionadas a dados por meio de código.
Hierarquia de Objetos Gerados e Membros
A ilustração a seguir resume os objetos gerados e membros de seu modelo de dados.
Application
O objeto Application fornece acesso de nível superior a objetos no seu aplicativo.Para acessar o objeto de Application, abra qualquer arquivo de código do usuário no editor de código e digite Application.Os tipos de métodos e propriedades que aparecem no IntelliSense após digitar Application e depois digitar "." serão alterados com base no arquivo de código no qual você está escrevendo o código.Na maioria dos casos, você pode usar uma propriedade do objeto Application para obter um objeto que representa o usuário atual.
Data Workspace
O objeto DataWorkspace é o objeto de nível superior para acesso a todos os dados.O objeto DataWorkspace contém uma propriedade para cada fonte de dados no seu projeto.Por exemplo, se você tiver uma fonte de dados denominada NorthwindData, LightSwitch gera uma propriedade chamada NorthwinddData.Quando você digita DataWorkspace no Editor de Código, a propriedade NorthwindData fica disponível em uma lista suspensa.
A ilustração a seguir mostra alguns membros gerados que podem aparecer em uma lista suspensa.
Data Source
LightSwitch gera um objeto para cada fonte de dados no seu projeto.Este objeto contém membros que você pode usar para acessar dados.Os membros de um objeto de fonte de dados incluem as propriedades do conjunto de entides e métodos de consulta.
A ilustração a seguir mostra alguns membros gerados que podem aparecer em uma lista suspensa.
Propriedades do Conjunto de Entidades
Uma propriedade do conjunto de entidades retorna uma coleção de entidades.LightSwitch gera uma propriedade do conjunto de entidades para cada entidade na fonte de dados.Por exemplo, se sua fonte de dados contém uma entidade chamada Customer, LightSwitch gera uma propriedade chamada Customers.Você pode usar a propriedade Customers para obter um objeto EntitySet que representa uma coleção de entidades Customer.
O objeto EntitySet também contém membros que permitem a você verificar se o usuário atual tem permissão para ler, atualizar ou excluir entidades na coleção.Para obter mais informações, consulte Executar tarefas relacionadas a dados por meio de código.
Observação |
---|
EntitySet é um dos vários tipos de objetos de coleção de entidades.Para otimizar o desempenho do seu código, certifique-se de que você está usando o tipo correto de objeto de coleção de entidades para o tipo de lógica de negócios que você está escrevendo.Para obter mais informações, consulte Objetos de Coleção de Entidades e Desempenho. |
Métodos de Consulta
Um método de consulta obtém os resultados de uma consulta.LightSwitch gera um método para cada consulta que está definida em sua fonte de dados.O nome do método corresponde ao nome da consulta.Uma consulta pode retornar uma única entidade ou uma coleção de entidades do tipo IDataServiceQueryable.
Observação |
---|
IDataServiceQueryable<T> é um dos vários tipos de objetos de coleção de entidades.Para otimizar o desempenho do seu código, certifique-se de que você está usando o tipo correto de objeto de coleção de entidades para o tipo de lógica de negócios que você está escrevendo.Para obter mais informações, consulte Objetos de Coleção de Entidades e Desempenho. |
Por padrão, LightSwitch gera os seguintes métodos de consulta para cada entidade na fonte de dados.
<Entity Name>_Single.
<Entity Name>_SingleOrDefault.
Ambos os métodos aceitam um segmento de chave primário e retornam um objeto de entidade única.Se nenhuma entidade é retornada, o método <Entity Name>_Single lança uma exceção enquanto o método <Entity Name>_SingleOrDefault retorna um valor Null (Nothing no Visual Basic).
Entidades
LightSwitch gera um EntityObject para cada entidade em uma coleção de entidades.Por exemplo, se seu código recuperou uma coleção de pedidos, a coleção conteria um EntityObject que representa cada pedido.Um EntityObject contém membros que você pode usar para excluir uma entidade, ler ou atualizar o valor das propriedades de entidade ou obter entidades relacionadas.Você pode obter um EntityObject de um objeto de coleção de entidades, como um EntitySet, ou chamando um método de consulta que retorna uma entidade.Para obter mais informações, consulte Executar tarefas relacionadas a dados por meio de código.
A ilustração a seguir mostra os membros de uma entidade Order nomeada myOrder.A entidade Order contém propriedades de entidade como OrderDate, OrderID, e Freight.A entidade Order também tem membros que você pode usar para obter a coleção relacionada Order_Details e o Customer que fez o pedido.
Neste exemplo, a propriedade Customer retorna uma entidade Customer.Uma entidade Customer está no lado "um" da relação Customer-Order.
A propriedade Order_Details retorna uma coleção de entidades Order_Details.A entidade Order_Details está no lado "muitos" da relação Order-Order_Details.O objeto de coleção Order_Details é do tipo EntityCollection.
Esta ilustração mostra também uma propriedade chamada Order_DetailsQuery.Propriedades que terminam com a palavra Query retornam um objeto IDataServiceQueryable.
Observação |
---|
EntityCollection e IDataServiceQueryable são ambos tipos de objetos de coleção de entidades.Para otimizar o desempenho do seu código, certifique-se de que você está usando o tipo correto de objeto de coleção de entidades para o tipo de lógica de negócios que você está escrevendo.Para obter mais informações, consulte Objetos de Coleção de Entidades e Desempenho. |
Objetos de Coleção de Entidades e Desempenho
Quando você usa um objeto de coleção de entidades em uma expressão do LINQ, o LightSwitch executa uma operação que recupera entidades da camada do servidor.O tipo de objeto que você usa determina se o LightSwitch recupera todas as entidades em uma coleção ou apenas um subconjunto delas.Para garantir que seu código performe como esperado, escolha o tipo mais apropriado de objeto de coleção para a lógica de negócios que você está escrevendo.Existem dois tipos de objetos de coleção de entidades: Objetos que fazem com que o LightSwitch avalie uma expressão LINQ remotamente e objetos que fazem com que o LightSwitch avalie uma expressão LINQ localmente.
Operações LINQ: Execução Remota VS. Local
Se você usar um objeto EntitySet ou IDataServiceQueryable em uma expressão do LINQ, o LightSwitch passa toda a expressão do LINQ para o serviço de dados da camada do servidor.Em seguida, os resultados da expressão são passados para o código de chamada.Esse tipo de execução de consulta performa bem porque somente entidades que satisfazem a consulta são retornadas para o código de chamada.No entanto, somente um subconjunto dos operadores de consulta é compatível com o serviço de dados.Se sua expressão requer outros operadores LINQ, considere o uso de outros tipos de objetos de coleção.
A ilustração a seguir mostra uma expressão LINQ que usa um objeto IDataServiceQueryable.Este exemplo mostra a operação de LINQ passando toda a expressão para o serviço de dados e retornando somente entidades Order que satisfazem às condições da consulta.
Se você usar um objeto EntityCollection ou IEnumerable em uma expressão do LINQ, LightSwitch não passa a expressão para o serviço de dados.Em vez disso, LightSwitch recupera todas as entidades do tipo determinado.Em seguida, a expressão é aplicada a toda a coleção localmente.Se uma coleção de entidade for grande, esse tipo de execução da consulta pode afetar negativamente o desempenho.No entanto, seu código pode usar o conjunto completo de operadores LINQ.Além disso, essa abordagem pode fazer sentido quando você deseja passar todas as entidades da coleção para outros métodos em seu código.
A ilustração a seguir mostra uma expressão LINQ que usa um objeto EntityCollection.Este exemplo mostra a operação do LINQ, recuperando todos as entidades Order para um determinado cliente.Em seguida, as condições da consulta são aplicadas localmente à coleção inteira.
Exemplos: Obtenção de Objetos de Coleção de Entidade no Código
A seguir mostra-se como você pode obter os conjuntos de entidades Order no banco de dados do exemplo Northwind.
Para obter esse objeto de coleção de entidades |
Use este código |
Execução Remota ou Local |
---|---|---|
EntitySet |
DataWorkspace.Northwind.Orders ou myOrder.Details.EntitySet() |
Remoto |
IDataServiceQueryable |
myCustomer.OrdersQuery ou DataWorkspace.Northwind.Orders.GetQuery() |
Remoto |
EntityCollection |
myCustomer.Orders |
Local |
IEnumerable |
myCustomer.OrdersQuery.Execute() ou DataWorkspace.Northwind.Orders.GetQuery().Execute() |
Remoto |
Consulte também
Conceitos
Executar tarefas relacionadas a dados por meio de código
Escrever o código em LightSwitch