Share via


Instructions de création de services WCF RIA pour LightSwitch

Cette rubrique fournit des indications pour la création et la consommation des services Windows Communication Foundation (WCF) Rich Application Internet (RIA) dans une application basée sur LightSwitch.Cette rubrique fournit les informations sur les tâches suivantes :

  • Stockage, extraction et consommation de chaînes de connexion dans la classe du service de domaine d'un service RIA WCF

  • Définition de méthodes de requête pour une utilisation dans une application basée sur LightSwitch

  • Application d'attributs aux champs d'une entité

Pour plus d'informations sur la conception de services RIA WCF, consultez Services RIA WCF (page éventuellement en anglais).

Stockage, extraction et consommation de chaînes de connexion

Pour se connecter aux données à partir de la classe du service de domaine d'un service RIA WCF, votre code doit passer une chaîne de connexion au fournisseur de sources de données.Les développeurs qui consomment le service peuvent stocker la chaîne de connexion dans le fichier web.config de l'application LightSwitch lorsqu'ils se connectent au service.Dans la classe du service de domaine de votre service RIA WCF, votre code peut extraire et consommer la chaîne de connexion.

Gg589479.collapse_all(fr-fr,VS.110).gifStockage de la chaîne de connexion

Les développeurs fournissent une chaîne de connexion à la source de données lorsqu'ils se connectent à votre service RIA WCF dans LightSwitch.La chaîne de connexion est enregistrée dans le fichier web.config de l'application LightSwitch.Pour plus d'informations, consultez Comment : Se connecter aux données.

Pour aider des développeurs à fournir la chaîne de connexion correcte, vous pouvez fournir un texte utile qui décrit le format attendu de la chaîne.Ce texte s'affiche dans la zone Chaîne de connexion de l' Assistant Attacher une source de données.Pour fournir ce texte, ajoutez un attribut DescriptionAttribute en haut de la classe de service de domaine.

Gg589479.collapse_all(fr-fr,VS.110).gifExtraction de la chaîne de connexion

Dans la classe de service de domaine de votre service RIA WCF, votre code peut extraire la chaîne de connexion du fichier web.config en faisant référence au nom qualifié complet de la classe de service du domaine (par exemple, CustomerNamespace.CustomerService).L'exemple suivant extrait une chaîne de connexion en substituant la méthode Initialize de la classe de service de domaine.Si aucune chaîne de connexion n'est trouvée, une chaîne de connexion codée en dur est utilisée.

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(fr-fr,VS.110).gifConsommation de la chaîne de connexion

Dans la classe de service de domaine, vous pouvez utiliser la chaîne de connexion pour vous connecter aux données de la façon que vous voulez.Toutefois, certaines technologies de Visual Studio requièrent que vous utilisiez la chaîne de connexion de façons spécifiques.Par exemple, si vous construisez des entités dans votre service en utilisant ADO.NET Entity Data Model, votre code doit retourner la chaîne de connexion dans CreateObjectContext la méthode.L'exemple suivant est basé sur un scénario dans lequel vous avez utilisé un EDM (Entity Data Model) ADO.NET pour générer les entités fournies par votre service.Cet exemple substitue CreateObjectContext la méthode et retourne la chaîne de connexion au fournisseur 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());
}

Définition de méthodes de requête consommées dans LightSwitch

Pour chaque entité dans votre classe de service de domaine, vous devez identifier une méthode par défaut que LightSwitch peut utiliser pour retourner une collection d'entités.Vous pouvez également définir d'autres méthodes qui retournent des données.

Gg589479.collapse_all(fr-fr,VS.110).gifIdentification d'une méthode de requête que LightSwitch utilise par défaut

Toutes les entités dans LightSwitch ont au moins une méthode qui retourne une collection.Cette méthode s'affiche dans LightSwitch et permet aux développeurs de créer des écrans qui affichent des listes d'informations telles que les clients ou commandes.Vous devez identifier la méthode que LightSwitch doit utiliser comme méthode de collecte par défaut pour toute entité donnée dans votre classe de service de domaine.Pour identifier cette méthode, appliquez l'attribut QueryAttribute à la méthode.Affectez la valeur True à la propriété IsDefault de QueryAttribute.Cette méthode doit retourner un IEnumerable<T> ou un IQueryable<T> du type d'entité.La collection retournée par la méthode doit contenir tous les champs de l'entité.La requête ne doit accepter aucun paramètre.L'exemple suivant applique l'attribut QueryAttribute à la méthode de requête GetCustomers de l'entité 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(fr-fr,VS.110).gifCréation d'autres méthodes de requête

Vous pouvez créer autant de méthodes de requête que vous voulez.Chaque méthode de requête peut retourner une ou plusieurs entités selon la logique personnalisée que vous ajoutez à la méthode.Dans LightSwitch, vous pouvez exécuter ces méthodes dans votre logique métier ou les utiliser pour afficher des données dans un écran.Les méthodes de requête doivent retourner un type d'entité, ou un IEnumerable<T> ou un IQueryable<T> d'un type d'entité.Les paramètres de méthode doivent être des types valeur nullable et simple pris en charge par LightSwitch.Pour plus d'informations sur les types Nullable, consultez Types valeur Nullable (Visual Basic) ou Types Nullable (Guide de programmation C#).Pour plus d'informations sur les types simples pris en charge dans LightSwitch, consultez Comment : Définir des champs de données.

Application d'attributs aux champs d'une entité

Vous pouvez appliquer des attributs aux champs d'entités dans votre classe de service de domaine.Le tableau suivant fournit des conseils sur l'utilisation des attributs pour obtenir l'effet souhaité dans LightSwitch.

Attribut

Utilisation de cette propriété dans LightSwitch.

AssociationAttribute

Pour les relations un-à-plusieurs, affectez à la propriété ThisKey la clé primaire de l'entité qui existe sur le côté un de la relation.

Pour les relations zéro ou un-à-plusieurs, affectez à la propriété ThisKey la clé primaire de l'entité qui existe sur le côté zéro ou un de la relation.

Pour les relations zéro-à-un, affectez à la propriété ThisKey la clé primaire de l'entité qui existe sur le côté un de la relation.Affectez à la propriété OtherKey la clé primaire de l'entité qui existe sur le côté zéro-à-un de la relation.

DisplayAttribute

Dans LightSwitch, utilisez la propriété ShortName ou Name pour spécifier le nom que vous voulez afficher pour ce champ.Utilisez la propriété Description pour spécifier le texte que vous voulez afficher comme une info-bulle lorsque les utilisateurs pointent sur un contrôle qui contient le champ dans un écran.

EditableAttribute

Dans LightSwitch, si vous affectez à la propriété AllowEdit la valeur False, la propriété ReadOnly du champ a la valeur True.

EnumDataTypeAttribute

Si vous affectez à la propriété EnumType une énumération, LightSwitch crée une liste de choix pour le champ à l'aide des valeurs de l'énumération.

KeyAttribute

Dans LightSwitch, utilisez l'attribut KeyAttribute si vous voulez que le champ soit utilisé comme clé primaire de l'entité.Vous pouvez spécifier plusieurs clés.

RangeAttribute

Utilisez cet attribut pour définir les valeurs minimale et maximale du champ.Cet attribut n'a aucun effet sur les types de données non numériques.

RequiredAttribute

Dans LightSwitch, cette propriété affecte uniquement des champs de type chaîne.Si vous affectez à la propriété AllowEmptyStrings de cet attribut la valeur False, dans LightSwitch, la propriété' Est obligatoire du champ a la valeur True.

ScaffoldColumnAttribute

Dans LightSwitch, si vous affectez à la propriété Scaffold la valeur True, la propriété Afficher par défaut a la valeur True.

StringLengthAttribute

Dans LightSwitch, utilisez la propriété MaximumLength pour définir la propriété Longueur maximale du champ.

StringLengthAttribute

Dans LightSwitch, si vous appliquez cet attribut, la propriété Afficher par défaut du champ a la valeur False.

Les attributs suivants n'ont aucun effet dans LightSwitch :

  • ConcurrencyCheck

  • DataType

  • DisplayColumn

  • DisplayFormat

  • FilterUIHint

  • MetadataType

  • Expression régulière

  • ScaffoldTable

  • UIHintAttribute