Trabalhando objetos relacionados a dados em código
O LightSwitch gera objetos e membros que descrevem seus dados. Os nomes desses objetos e membros correspondem aos nomes de itens na sua solução. Por exemplo, se você adicionar uma tabela chamada Customer, o LightSwitch gerará um objeto chamado Customer. Este tópico descreve cada tipo de objeto gerado pelo LightSwitch. Para ver exemplos de códigos que usam esses objetos e membros para executar tarefas relacionadas a dados comuns, consulte Executando tarefas relacionadas a dados usando código.
Hierarquia de objetos e membros gerados
A ilustração a seguir resume os objetos e os membros gerados de seu modelo de dados.
Aplicativo
O objeto Application dá acesso de nível superior a objetos no seu aplicativo. Para acessar o objeto Application, abra qualquer arquivo de código do usuário no editor de código e digite Application. Os tipos de métodos e as propriedades que aparecem no IntelliSense depois que você digitar Application e “.” serão alterados com base no arquivo de código no qual você está gravando o código. Na maioria dos casos, você pode usar uma propriedade do objeto Application para obter um objeto que represente o usuário atual.
Espaço de trabalho de dados
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 chamada NorthwindData, o LightSwitch gerará 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.
Fonte de dados
O LightSwitch gera um objeto para cada fonte de dados no projeto. Esse objeto contém membros que podem ser usados para acessar dados. Entre os membros de um objeto de fonte de dados estão propriedades do conjunto de entidades 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. O LightSwitch gera uma propriedade do conjunto de entidades para cada entidade na fonte de dados. Por exemplo, se sua fonte de dados contiver uma entidade chamada Customer, o LightSwitch gerará uma propriedade chamada Customers. Não é possível 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 verificar se o usuário atual tem permissão para ler, atualizar ou excluir entidades na coleção. Para obter mais informações, consulte Executando tarefas relacionadas a dados usando código.
Dica
EntitySet é um dos vários tipos de objetos de coleção de entidades.Para otimizar o desempenho do código, verifique se você está usando o tipo correto de objeto de coleção de entidades para o tipo de lógica de negócio que está gravando.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. O LightSwitch gera um método para cada consulta definida em sua fonte de dados. O nome do método correspondente ao nome da consulta. Uma consulta pode retornar uma única entidade ou uma coleção de entidades do tipo IDataServiceQueryable.
Dica
IDataServiceQueryable<T> é um dos vários tipos de objetos de coleção de entidades.Para otimizar o desempenho do código, verifique se você está usando o tipo correto de objeto de coleção de entidades para o tipo de lógica de negócio que está gravando.Para obter mais informações, consulte Objetos de coleção de entidades e desempenho.
Por padrão, o LightSwitch gera os métodos de consulta a seguir para cada entidade na fonte de dados.
<Entity Name>_Single.
<Entity Name>_SingleOrDefault.
Esses dois métodos aceitam um segmento de chave primária e retornam um objeto de entidade única. Se nenhuma entidade retornar, o método <Entity Name>_Single acionará uma exceção enquanto o método <Entity Name>_SingleOrDefault retorna um valor Null (Nothing no Visual Basic).
Entidades
O LightSwitch gera um EntityObject para cada entidade em uma coleção de entidades. Por exemplo, se seu código recuperasse uma coleção de pedidos, a coleção conteria um EntityObject, representando 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. É possível 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 Executando tarefas relacionadas a dados usando código.
A ilustração a seguir mostra os membros de uma entidade Order chamada 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 Order_Details relacionada e o Customer que fez o pedido.
Nesse exemplo, a propriedade Customer retorna uma entidade Customer. Uma entidade Customer está no lado de um da relação Customer-Order.
A propriedade Order_Details retorna uma coleção de entidades Order_Details. A entidade Order_Details está mais no lado de muitos da relação Order-Order_Details. O objeto de coleção Order_Details é do tipo EntityCollection.
Esta ilustração também mostra uma propriedade chamada Order_DetailsQuery. Propriedades que terminam com a palavra Query retornam um objeto IDataServiceQueryable.
Dica
EntityCollection e IDataServiceQueryable são tipos de objetos de coleção de entidades.Para otimizar o desempenho do código, verifique se você está usando o tipo correto de objeto de coleção de entidades para o tipo de lógica de negócio que está gravando.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 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 seja executado conforme esperado, escolha o tipo mais apropriado do objeto de coleção para a lógica de negócio que você está gravando. 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: Remoto vs.Execução de local
Se você usar um objeto EntitySet ou IDataServiceQueryable em uma expressão LINQ, o LightSwitch passará toda a expressão LINQ para o serviço de dados da camada do servidor. Em seguida, os resultados da expressão são passados novamente para o código de chamada. Esse tipo de execução de consulta funciona bem porque somente as entidades que atendam à consulta serã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 necessitar de 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. Esse exemplo mostra a operação LINQ passando toda a expressão para o serviço de dados e retornando somente entidades Order, que atendam às condições da consulta.
Se você usar um objeto EntityCollection ou IEnumerable em uma expressão LINQ, o LightSwitch não passará a expressão para o serviço de dados. Em vez disso, o LightSwitch recupera todas as entidades do tipo indicado. Em seguida, a expressão é aplicada localmente à coleção inteira. Se uma coleção de entidades for grande, esse tipo de execução de consulta poderá afetar o desempenho de maneira negativa. 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 no seu código.
A ilustração a seguir mostra uma expressão LINQ que usa um objeto EntityCollection. Esse exemplo mostra a operação LINQ recuperando todas as entidades Order para um determinado cliente. Em seguida, as condições da consulta são aplicadas localmente à coleção inteira.
Exemplos: obtendo objetos de coleção de entidades no código
A seguir, como você pode obter as coleções de entidades Order no banco de dados de 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() |
Remota |
IDataServiceQueryable |
myCustomer.OrdersQuery ou DataWorkspace.Northwind.Orders.GetQuery() |
Remota |
EntityCollection |
myCustomer.Orders |
Local |
IEnumerable |
myCustomer.OrdersQuery.Execute() ou DataWorkspace.Northwind.Orders.GetQuery().Execute() |
Remota |
Consulte também
Conceitos
Executando tarefas relacionadas a dados usando código