Partilhar via


Diretrizes para criar os serviços WCF RIA para LightSwitch

Este tópico fornece diretrizes para criar e consumir serviços de Aplicações de Internet Rica (RIA, em inglês) do Windows Communication Foundation (WCF) em um aplicativo baseado em LightSwitch.Este tópico fornece informações sobre as seguintes tarefas:

  • Armazenar, recuperar e consumir cadeias de conexão na classe de serviço do domínio de um serviço WCF RIA

  • Definir métodos de consulta para uso em um aplicativo baseado em LightSwitch

  • Aplicar atributos para os campos de uma entidade

Para obter informações gerais sobre preojeta serviços WCF RIA, consulte Serviços WCF RIA.

Armazenar, recuperar e consumir cadeias de conexão

Para se conectar a dados dentro da classe de serviço do domínio de um serviço WCF RIA, seu código deve passar uma cadeia de conexão para o provedor de fonte de dados.Os desenvolvedores que consomem o serviço podem armazenar a cadeia de conexão no arquivo web.config do aplicativo LightSwitch quando se conectam ao serviço.Na classe de serviço do domínio do serviço WCF RIA, seu código pode recuperar e consumir a cadeia de conexão.

Gg589479.collapse_all(pt-br,VS.110).gifArmazenar a cadeia de conexão

Os desenvolvedores fornecem uma cadeia de conexão da fonte de dados quando se conectam ao serviço WCF RIA em LightSwitch.A cadeia de conexão é salva no arquivo web.config do aplicativo LightSwitch.Para obter mais informações, consulte Como: conectar-se aos dados.

Para ajudar os desenvolvedores a fornecer a cadeia de conexão correta, você pode fornecer texto útil que descreve o formato esperado da cadeia de caracteres.Esse texto aparece na caixa Cadeia de conexão do Assistente da fonte de dados anexada.Para fornecer esse texto, adicione um atributo DescriptionAttribute à parte superior da classe de serviço do domínio.

Gg589479.collapse_all(pt-br,VS.110).gifRecuperar a cadeia de conexão

Na classe de serviço do domínio do serviço WCF RIA, seu código pode recuperar a cadeia de conexão a partir do arquivo web.config referenciando ao nome totalmente qualificado da classe de serviço de domínio (por exemplo, CustomerNamespace.CustomerService).O exemplo a seguir recupera uma cadeia de conexão substituindo o método Inicializar da classe de serviço de domínio.Se nenhuma cadeia de conexão for encontrada, uma cadeia de conexão embutida no código é usada.

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(pt-br,VS.110).gifConsumir a cadeia de conexão

Na classe de serviço de domínio, você pode usar a cadeia de conexão para se conectar a dados em qualquer forma que você desejar.No entanto, algumas tecnologias no Visual Studio exigem que você use a cadeia de conexão em maneiras específicas.Por exemplo, se você gerar as entidades no serviço usando um modelo de dados de entidade ADO.NET, seu código deve retornar a cadeia de conexão no método CreateObjectContext.O exemplo a seguir é baseado em uma situação em que você usou um modelo de dados de entidade ADO.NET para gerar as entidades fornecidas pelo serviço.Este exemplo substitui o método CreateObjectContext e retorna a cadeia de conexão para o provedor do 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());
}

Definindo os métodos de consulta que são consumidos em LightSwitch

Para cada entidade em sua classe de serviço de domínio, você deve identificar um método padrão que LightSwitch pode usar para retornar uma coleção de entidades.Você também pode definir outros métodos que retornem dados.

Gg589479.collapse_all(pt-br,VS.110).gifIdentificando um método de consulta que LightSwitch usa por padrão

Todas as entidades em LightSwitch têm pelo menos um método que retorna uma coleção.Este método aparece em LightSwitch e permite que desenvolvedores criem telas que mostram listas de informações, como clientes ou pedidos.Você deve identificar o método o qual você deseja que LightSwitch use como o método padrão de coleção para qualquer entidade fornecida em sua classe de serviço de domínio.Para identificar esse método, aplique o atributo QueryAttribute ao método.Defina a propriedade IsDefault da QueryAttributeTrue.Esse método deve retornar IEnumerable<T> ou IQueryable<T> do tipo de entidade.A coleção retornada pelo método deve conter todos os campos da entidade.A consulta não deve aceitar nenhum parâmetro.O exemplo seguinte aplica o atributo QueryAttribute ao GetCustomers método de consulta da Customers entidade.

<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(pt-br,VS.110).gifCriar outros métodos de consulta

Você pode criar tantos métodos de consulta quanto desejar.Cada método de consulta pode retornar uma ou mais entidades com base na lógica personalizada que você adiciona ao método.Em LightSwitch, você pode executar esses métodos em sua lógica de negócio ou usá-los para exibir dados em uma tela.Os métodos de consulta devem retornar um tipo de entidade, ou IEnumerable<T> ou IQueryable<T> de um tipo de entidade.Os parâmetros do método deve ser anuláveis e tipos simples que são suportados por LightSwitch.Para obter mais informações sobre tipos anuláveis, consulte Tipos anuláveis do valor (Visual Basic) ou Tipos anuláveis (guia de programação do C#).Para obter mais informações sobre tipos simples que são suportados em LightSwitch, consulte Como: definir campos de dados.

Aplicando atributos a campos de entidade

Você pode aplicar atributos aos campos de entidades em sua classe de serviço de domínio.A tabela a seguir fornece orientação sobre como usar atributos para obter o efeito que você deseja em LightSwitch.

Atributo

Usando essa propriedade em LightSwitch

AssociationAttribute

Para relação um-para-muitos, defina a propriedade ThisKey como a chave primária da entidade que existe em um dos lados da relação.

Para relações nulas ou um-para-muitos, defina a propriedade ThisKey como a chave primária da entidade que existe em nenhum ou em um dos lados da relação.

Para relações um para zero-ou-um, defina a propriedade ThisKey como a chave primária da entidade que existe em um dos lados da relação.Defina a propriedade OtherKey como a chave primária de entidade que existe em zero-a-um lado da relação.

DisplayAttribute

Em LightSwitch, use a propriedade ShortName ou Nome para especificar o nome que você deseja que apareça para este campo.Use a propriedade Descrição para especificar o texto que você deseja que apareça como uma dica de ferramenta quando usuários apontam para um controle que contém o campo em uma tela.

EditableAttribute

Em LightSwitch, se você definir a propriedade AllowEdit como False, a propriedade Somente leitura do campo é definido como True.

EnumDataTypeAttribute

Se você definir a propriedade EnumType como uma enumeração, LightSwitch cria uma lista de opções para o campo usando os valores da enumeração.

KeyAttribute

Em LightSwitch, use o atributo KeyAttribute se você desejar que o campo seja usado como a chave primária de entidade.Você pode especificar várias chaves.

RangeAttribute

Use esse atributo para definir os valores mínimo e máximo do campo.Este atributo não tem efeito em tipos de dados não numéricos.

RequiredAttribute

Em LightSwitch, essa propriedade afeta somente os campos que têm um tipo cadeia de caracteres.Se você definir a propriedade AllowEmptyStrings desse atributo como False, em LightSwitch, a propriedade É necessário do campo é definida como True.

ScaffoldColumnAttribute

Em LightSwitch, se você definir a propriedade Scaffolding como True, a propriedade Exibição por padrão é definido como True.

StringLengthAttribute

Em LightSwitch, use a propriedade MaximumLength para definiar a propriedade Comprimento máximo do campo.

StringLengthAttribute

Em LightSwitch, se você aplicar este atributo, a propriedade Exibição por padrão do campo é definida como False.

Os seguintes atributos não têm nenhum efeito sobre LightSwitch:

  • ConcurrencyCheck

  • DataType

  • DisplayColumn

  • DisplayFormat

  • FilterUIHint

  • MetadataType

  • RegularExpression

  • ScaffoldTable

  • UIHintAttribute