Compartir a través de


Instrucciones para crear servicios RIA de WCF para LightSwitch

A continuación se proporcionan las instrucciones para crear y utilizar Windows Communication Foundation (WCF) Rich Internet Aplicación (RIA) en una aplicación basada en LightSwitch.El tema proporciona la siguiente información sobre las siguientes tareas:

  • Almacenar, recuperar y utilizar la cadena de conexión en la clase de servicio de dominio del servicio de WCF RIA.

  • Definir los métodos de consulta para el uso en una aplicación basada en LightSwitch

  • Aplicar atributos a los campos de una entidad

Para obtener información más general sobre el diseño de los servicios WCF RIA, vea WCF RIA Services.

Almacenar, recuperar y utilizar las cadenas de conexión

Para conectarse a los datos desde la clase de servicio de dominio de un servicio de WCF RIA, su código debe pasar una cadena de conexión al proveedor del origen de datos.Los desarrolladores de software que utilizan el servicio pueden almacenar la cadena de conexión en el archivo web.config de la aplicación LightSwitch cuando conectan al servicio.En la clase de servicio de dominio de su servicio de WCF RIA, su código puede recuperar y utilizar la cadena de conexión.

Gg589479.collapse_all(es-es,VS.110).gifAlmacenar la cadena de conexión

Los desarrolladores de software proporcionan una cadena de la conexión a un origen de datos cuando conectan a su servicio de WCF RIA en LightSwitch.La cadena de conexión se guarda en el archivo web.config de la aplicación LightSwitch.Para obtener más información, vea Cómo: Conectarse a datos.

Para ayudar a los desarrolladores de software a proporcionar la cadena de conexión correcta, proporcione texto útil que describa el formato esperado de la cadena.Este texto aparece en el cuadro Cadena de conexión del Asistente para asociar origen de datos.Para proporcionar el texto, agregue un atributo DescriptionAttribute a la parte superior de la clase de servicio de dominio.

Gg589479.collapse_all(es-es,VS.110).gifRecuperar la cadena de conexión

En la clase de servicio de dominio de su servicio de WCF RIA, el código puede recuperar la cadena de conexión del archivo web.config haciendo referencia al nombre completo de la clase de servicio de dominio (por ejemplo, CustomerNamespace.CustomerService).El ejemplo siguiente recupera una cadena de conexión sustituyendo el método Inicialice de la clase de servicio de dominio.Si no se encuentra ninguna cadena de conexión, se utiliza una cadena de conexión codificada de forma rígida.

Public Overrides Sub Initialize _
    (context As System.ServiceModel.DomainServices.Server.DomainServiceContext)
    
    If (WebConfigurationManager.ConnectionStrings.Item(Me.[GetType]().FullName) _
        Is Nothing) OrElse [String].IsNullOrWhiteSpace _
    (WebConfigurationManager.ConnectionStrings.Item _
     (Me.[GetType]().FullName).ConnectionString) Then
        
        _connectionString = "data source=NorthwindDB;initial catalog= " _
            & "Northwind;user id=myID;password=myPassword"
    Else
        _connectionString = WebConfigurationManager.ConnectionStrings.Item _
            (Me.[GetType]().FullName).ConnectionString
    End If

    MyBase.Initialize(context)
End Sub
        
string _connectionString;
public override void Initialize
    (System.ServiceModel.DomainServices.Server.DomainServiceContext context)
    {
        if ((WebConfigurationManager.ConnectionStrings
            [(this.GetType().FullName)] == null) || 
            String.IsNullOrWhiteSpace(WebConfigurationManager.ConnectionStrings
            [this.GetType().FullName].ConnectionString))
        {
            _connectionString = "data source=NorthwindDB;initial catalog= " + 
                "Northwind;user id=myID;password=myPassword";
        }
        else
        {
            _connectionString = WebConfigurationManager.ConnectionStrings
                [this.GetType().FullName].ConnectionString;
        }
        base.Initialize(context);
    }

Gg589479.collapse_all(es-es,VS.110).gifUsar la cadena de conexión

En la clase de servicio de dominio, puede utilizar la cadena de conexión para conectar los datos como desee.Sin embargo, algunas tecnologías en Visual Studio requieren que utilice la cadena de conexión de maneras concretas.Por ejemplo, si genera las entidades del servicio utilizando un ADO.NET Entity Data Model, el código debe devolver la cadena de conexión en el método CreateObjectContext.El siguiente ejemplo está basado en un escenario en el que ha utilizado un Entity Data Model de ADO.NET para generar las entidades proporcionadas por el servicio.Este ejemplo reemplaza el método CreateObjectContext y devuelve la cadena de conexión al proveedor de Entity Framework.

Protected Overrides Function CreateObjectContext() As NorthwindEntities
    Dim Connection As New EntityConnectionStringBuilder()
    Connection.ProviderConnectionString = _connectionString
    Connection.Provider = "System.Data.SqlClient"
    Connection.Metadata = "res://*/NorthwindModel.csdl|" & _
                 "res://*/NorthwindModel.ssdl|" & _
                 "res://*/NorthwindModel.msl"

    Return New NorthwindEntities(Connection.ToString)
End Function
protected override NorthwindEntities2 CreateObjectContext()
{
    EntityConnectionStringBuilder Connection = new EntityConnectionStringBuilder();
    Connection.ProviderConnectionString = _connectionString;
    Connection.Provider = "System.Data.SqlClient";
    Connection.Metadata = "res://*/NorthwindModel.csdl|" +
                 "res://*/NorthwindModel.ssdl|" +
                 "res://*/NorthwindModel.msl";
    return new NorthwindEntities2(Connection.ToString());
}

Definir métodos de consulta usados en LightSwitch

Para cada entidad en su clase de servicio de dominio, debe identificar un método predeterminado que LightSwitch se pueda utilizar para devolver una colección de entidades.También puede definir otros métodos que devuelvan datos.

Gg589479.collapse_all(es-es,VS.110).gifIdentificar un método de consulta que LightSwitch usa de forma predeterminada

Todas las entidades en LightSwitch tienen un método que devuelve al menos una colección.El método aparece en LightSwitch y permite a los desarrolladores de software crear pantallas que muestran listas de información, por ejemplo, de clientes o pedidos.Debe identificar un método predeterminado que LightSwitch quiera usar como el método de colección predeterminado para una entidad en la clase de servicio de dominio.Para identificar el método, aplique el atributo QueryAttribute al método.Establezca la propiedad IsDefault de QueryAttribute en True.Este método debe devolver un tipo de entidad o un IEnumerable<T> o IQueryable<T> de un tipo de entidad.La colección devuelta por el método debe contener todos los campos de la entidad.La consulta no debe aceptar ningún parámetro.El siguiente ejemplo aplica el atributo QueryAttribute al método de consulta GetCustomers de la entidad Customers.

<Query(IsDefault:=True)> _
Public Function GetCustomers() As IQueryable(Of Customer)
    Return Me.ObjectContext.Customers
End Function
[Query(IsDefault=true)]
public IQueryable<Customer> GetCustomers()
{
    return this.ObjectContext.Customers;
}

Gg589479.collapse_all(es-es,VS.110).gifCrear otros métodos de consulta

Puede crear tantos métodos de consulta como desee.Cada método de consulta puede devolver una o más entidades basadas en la lógica personalizada que agrega al método.En LightSwitch, puede ejecutar los métodos en su lógica comercial o utilizarlos para mostrar los datos en una pantalla.Los métodos de consulta deben devolver un tipo de entidad o un IEnumerable<T> o IQueryable<T> de un tipo de entidad.Los parámetros de métodos deben admitir valores NULL y ser tipos simples admitidos por LightSwitch.Para obtener más información sobre los tipos que admiten valores null, vea Tipos que admiten valores null (Visual Basic) o Tipos que aceptan valores NULL (Guía de programación de C#).Para obtener más información sobre los tipos de archivos compatibles en LightSwitch, vea Cómo: Definir campos de datos.

Aplicar atributos a los campos de una entidad

Puede aplicar los atributos a los campos de entidades en la clase de servicio de dominio.En la siguiente tabla se proporciona orientación para usar los atributos para lograr el efecto que desea en LightSwitch.

Atributo

Uso de la propiedad en LightSwitch.

AssociationAttribute

Para relaciones de uno a varios, establezca la propiedad ThisKey en la clave principal de la entidad que existe en un lado de la relación.

Para relaciones de cero o uno a varios, establezca la propiedad ThisKey en la clave principal de la entidad que existe en cero o en un lado de la relación.

Para relaciones de cero a uno, establezca la propiedad ThisKey en la clave principal de la entidad que existe en un lado de la relación.Establezca la propiedad OtherKey en la clave primaria de la entidad que existe en el lado cero a un lado de la relación.

DisplayAttribute

En LightSwitch, utilice ShortName o la propiedad Name para especificar el nombre que desea para el campo.Utilice la propiedad Descripción para especificar el texto que desea aparecer como una información sobre herramientas cuando los usuarios señalan un control que contiene el campo en una pantalla.

EditableAttribute

En LightSwitch, si establece la propiedad AllowEdit en False, la propiedad ReadOnly del campo se establece en True.

EnumDataTypeAttribute

Si establece la propiedad EnumType en una enumeración, LightSwitch crea una lista de selección para el campo utilizando los valores de la enumeración.

KeyAttribute

En LightSwitch, utilice el atributo KeyAttribute si desea utilizar el campo como la clave principal de la entidad.Puede especificar varias claves.

RangeAttribute

Utilice este atributo para establecer los valores mínimos y máximos del campo.Este atributo no tiene ningún efecto en tipos de datos no numéricos.

RequiredAttribute

En LightSwitch, la propiedad afecta solo a los campos que tienen un tipo de cadena.Si establece AllowEmptyStrings la propiedad del atributo en False, en LightSwitch, la propiedad Is Required del campo está establecida en True.

ScaffoldColumnAttribute

En LightSwitch, si establece la propiedad Scaffold en True, la propiedad Display By Default del campo se establece en True.

StringLengthAttribute

En LightSwitch, use la propiedad MaximumLength para establecer la propiedad del campo Longitud máxima del campo.

StringLengthAttribute

En LightSwitch, si aplica el atributo, la propiedad Display by Default del campo se establece en False.

Los siguientes atributos no tienen ningún efecto en LightSwitch:

  • ConcurrencyCheck

  • DataType

  • DisplayColumn

  • DisplayFormat

  • FilterUIHint

  • MetadataType

  • Expresión regular

  • ScaffoldTable

  • UIHintAttribute