Trabajar con objetos relacionados con datos en el código
LightSwitch genera los objetos y miembros que describen los datos.Los nombres de los objetos y miembros coinciden con los nombres de los elementos de la solución.Por ejemplo, si agrega una tabla denominada Customer, LightSwitch genera un objeto denominado Customer.En este tema se describe cada tipo de objeto que se genera a través de LightSwitch.Para ver ejemplos de código que utilizan los objetos y miembros para realizar tareas relacionadas con datos comunes, vea Realizar tareas relacionadas con datos usando código.
Jerarquía de objetos y miembros generados
En la siguiente ilustración se resumen los objetos generados y los miembros del modelo de datos.
Application
El objeto Application proporciona el acceso al nivel superior para los objetos de la aplicación.Para tener acceso al objeto Application, abra cualquier archivo de código de usuario en el editor de código y, a continuación, escriba Application.Los tipos de métodos y propiedades que aparecen en IntelliSense después de escribir Application y, luego escribir "." cambiarán según el archivo de código en que se esté escribiendo el código.En la mayoría de los casos, puede utilizar una propiedad del objeto Application para obtener un objeto que representa al usuario actual.
Área de trabajo de datos
El objeto DataWorkspace es el objeto de nivel superior para el acceso a todos los datos.El objeto DataWorkspace contiene una propiedad para cada origen de datos del proyecto.Por ejemplo, si tiene un origen de datos denominado NorthwindData, LightSwitch genera una propiedad denominada NorthwinddData.Al escribir DataWorkspace en el Code Editor, la propiedad NorthwindData queda como disponible en una lista desplegable.
La siguiente ilustración muestra algunos miembros generados que podrían aparecer en una lista desplegable.
Origen de datos
LightSwitch genera un objeto para cada origen de datos de su proyecto.El objeto puede contener miembros que puede usar para el acceso a datos.Los miembros de un objeto de origen de datos incluyen las propiedades del conjunto de entidades y los métodos de consulta.
La siguiente ilustración muestra algunos miembros generados que podrían aparecer en una lista desplegable.
Propiedades del conjunto de entidades
Una propiedad del conjunto de entidades devuelve una colección de entidades.LightSwitch genera una propiedad de conjunto de entidades para cada entidad en el origen de datos.Por ejemplo, si el origen de datos contiene una entidad denominada Customer, LightSwitch genera una propiedad denominada Customers.Puede usar la propiedad Customers para obtener un objeto EntitySet que representa una colección de entidades Customer.
El objeto EntitySet también contiene miembros que le permiten comprobar si el usuario actual tiene permiso para leer, actualizar o eliminar las entidades en la colección.Para obtener más información, vea Realizar tareas relacionadas con datos usando código.
[!NOTA]
EntitySet es uno de varios tipos de objetos de colección de entidad.Para optimizar el rendimiento del código, asegúrese de que usa el tipo más adecuado de colección de entidades para la lógica comercial que está escribiendo.Para obtener más información, vea Colección de objetos de entidad y rendimiento.
Método de consulta
Un método de consulta obtiene los resultados de una consultaLightSwitch genera un método para cada consulta que se define en su origen de datos.El nombre del método coincide con el nombre de la consulta.Una consulta puede devolver una entidad única o una colección de entidades de tipo IDataServiceQueryable.
[!NOTA]
IDataServiceQueryable<T> es uno de varios tipos de objetos de colección de entidad.Para optimizar el rendimiento del código, asegúrese que usa el tipo adecuado de colección de entidades para la lógica de negocio que está escribiendo.Para obtener más información, vea Colección de objetos de entidad y rendimiento.
De forma predeterminada, LightSwitch genera los siguientes métodos de consulta para cada entidad en el origen de datos.
<Nombre de la entidad>_Single.
< Nombre de la entidad >_SingleOrDefault.
Ambos métodos aceptan un segmento de la clave principal y devuelven un objeto entidad único.Si no se devuelve ninguna entidad, el método < Nombre de la entidad >_Single produce una excepción mientras que el < Nombre de la entidad >_SingleOrDefault devuelve un valor Null (Nothing en Visual Basic).
Entidades
LightSwitch genera un EntityObject para cada entidad de una colección de entidades.Por ejemplo, si el código recuperó una colección de órdenes, la colección contendría EntityObject que representa cada orden.Un EntityObject contiene miembros que puede utilizar para eliminar una entidad, leer o actualizar el valor de las propiedades de entidad u obtener entidades relacionadas.Puede recibir un EntityObject de un objeto de colección de entidad como un EntitySet o llamando a un método de consulta que devuelva una entidad.Para obtener más información, vea Realizar tareas relacionadas con datos usando código.
En la siguiente ilustración se muestran los miembros de un Order nombre de entidad myOrder.La entidad Order contiene propiedades de entidad como OrderDate, OrderIDy Freight.La entidad Order también tiene miembros que puede utilizar para obtener la colección Order_Details relacionada y Customer que hizo el pedido.
En este ejemplo, la propiedad Customer devuelve una entidad Customer.Una entidad Customer se encuentra en un extremo de la relación Customer-Order.
Una propiedad Order_Details devuelve una colección de entidades Order_Details.La entidad Order_Details se encuentra en los extremos de la relación Order-Order_Details.El objeto de la colección Order_Details es de tipo EntityCollection.
La ilustración también muestra una propiedad denominada Order_DetailsQuery.Las propiedades que finalizan con la palabra Query devuelven un objeto IDataServiceQueryable.
[!NOTA]
EntityCollection y IDataServiceQueryable son ambos tipos de objetos de colección de entidad.Para optimizar el rendimiento del código, asegúrese de que usa el tipo más adecuado de colección de entidades para la lógica de negocio que está escribiendo.Para obtener más información, vea Colección de objetos de entidad y rendimiento.
Objetos de colección de entidades y rendimiento
Al utilizar un objeto de colección de entidad en una expresión LINQ, LightSwitch realiza una operación que recupera las entidades de la capa del servidor.El tipo de objeto que utiliza determina si LightSwitch recupera todas las entidades en una colección o solo un subconjunto.Para garantizar que el código funciona tal y como se espera, elija el tipo más adecuado de objeto de la colección según la lógica de negocio que esté escribiendo.Hay dos tipos de objetos de colección de entidad: Los objetos que hacen que LightSwitch evalúe una expresión LINQ de forma remota, y los objetos que hacen que LightSwitch evalúe una expresión LINQ de forma local.
Operaciones LINQ: Remotas VS. Ejecución local
Si utiliza un objeto EntitySet o IDataServiceQueryable en una expresión LINQ, LightSwitch pasa la expresión al servicio de datos del nivel de servicio.A continuación, los resultados de la expresión se devuelven al código de llamada.Este tipo de ejecución de la consulta está bien porque solo las entidades que satisfacen la consulta se devuelven al código de llamada.Sin embargo, solo un subconjunto de operadores de consulta son admitidos por el servicio de datos.Si su expresión requiere otros operadores de LINQ, considere el uso de otros tipos de objetos de la colección.
En la siguiente ilustración se muestra una expresión LINQ que usa un objeto IDataServiceQueryable.En el ejemplo se muestra la operación LINQ pasando la expresión completa al servicio de datos y devolviendo solo las entidades Order que satisfacen las condiciones de la consulta.
Si utiliza un objeto EntityCollection o un objeto IEnumerable en una expresión LINQ, LightSwitch no pasará la expresión al servicio de datos.En su lugar, LightSwitch recupera todas las entidades del tipo especificado.A continuación, la expresión se aplica localmente a la colección completa.Si una colección de entidades es grande, este tipo de ejecución de consulta puede afectar negativamente al rendimiento.Sin embargo, su código puede utilizar el conjunto completo de los operadores LINQ.Además, el enfoque podría tener sentido cuando desee pasar las entidades de colección completas a otros métodos en su código.
En la siguiente ilustración se muestra una expresión LINQ que usa un objeto EntityCollection.En este ejemplo se muestra la operación LINQ que recupera todas las entidades Order para un cliente determinado.A continuación, las condiciones de la consulta se aplican localmente a la colección completa.
Ejemplos: Obtener objetos de la colección de entidades en código
Las siguientes presentaciones muestran cómo puede obtener colecciones de entidades Order en la base de datos de ejemplo Northwind.
Para obtener el objeto de colección de entidad |
Utilizar el código |
Ejecución remota o local |
---|---|---|
EntitySet |
DataWorkspace.Northwind.Orders o bien myOrder.Details.EntitySet() |
Remote |
IDataServiceQueryable |
myCustomer.OrdersQuery o bien DataWorkspace.Northwind.Orders.GetQuery() |
Remote |
EntityCollection |
myCustomer.Orders |
Local |
IEnumerable |
myCustomer.OrdersQuery.Execute() o bien DataWorkspace.Northwind.Orders.GetQuery().Execute() |
Remote |
Vea también
Conceptos
Realizar tareas relacionadas con datos usando código
Escribir código en LightSwitch