IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

RIA Services : Changer de Connection String de manière dynamique


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 11
    Par défaut RIA Services : Changer de Connection String de manière dynamique
    Bonjour à tous,

    Je débute dans le développement SilverLight et RIA Services et je rencontre quelques difficultés.

    Dans l'application que je dois créer, une fois qu'un utlisateur se logge, il a le choix (via une combo populée à partir d'une table) de se connecter à telle ou telle DB qui se trouve sur tel ou tel Serveur. Je dois donc changer dynamiquement la connectionstring en fonction du choix de l'utilisateur.

    En parcourant documentations et forums (http://mattduffield.wordpress.com/20...linq2entities/) j'ai pu comprendre qu'il fallait créer côté serveur une classe partial dans laquelle je pourrai overrider CreateObjectContext(). Ce que j'ai donc fait. Et là, si j'hardcode ma nouvelle connectionString je n'ai pas de problème. Mon souci arrive donc quand je dois récupérer le nom du serveur et le nom de la DB choisie par l'utilisateur.

    Quelqu'un peut-il m'aider?

  2. #2
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 51
    Par défaut
    Salut
    Pourquoi ne donne tu pas la string de connexion en paramètre du RIA services?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 11
    Par défaut
    Re bonjour,

    Un grand merci pour ta réponse Cube55.

    voici ce que je fais et qui ne semble pas fonctionner :

    Dans la classe partial que j'ai ajoutée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    protected override AdminToolsEntities CreateObjectContext()
            {
                try
                {
                    CRMobile.AdminTools.Web.Models.AdminToolsEntities ctx = null;
                    string connString;
                    if (!String.IsNullOrEmpty(DbName) && !String.IsNullOrEmpty(ServerName))
                    {
                        if (!string.IsNullOrEmpty(ServiceContext.User.Identity.Name))
                        {
     
                            connString = EntityConnectionStringHelper.Build(
                                ServerName = ServerName,
                                 DbName = DbName,
                                 ConfigurationManager.AppSettings.Get("DefaultLogin"),
                                 ConfigurationManager.AppSettings.Get("DefaultPassword"),
                                 "Models.ExportConnectorModel",
                                 false);
                            ctx = new AdminToolsEntities(connString);
                        return Activator.CreateInstance(typeof(AdminToolsEntities), connString) as AdminToolsEntities;
                        }
                        return base.CreateObjectContext();
                    }
                    else
                        return base.CreateObjectContext();
                }
                catch (Exception ex)
                {
                    throw new ApplicationException("Error", ex);
                }
            }
    Dans la classe de mon DomainService :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public IQueryable<View_Connector> GetView_ConnectorAupif(string dbName, string serverName)
            {
                this.DbName = dbName;
                this.ServerName = serverName;
                this.CreateObjectContext();
                return this.ObjectContext.View_Connector.OrderByDescending(e => e.DateTime).Take(500);
     
            }
    Quand je suis en mode debug, et que je place mon curseur sur "connString", tout semble fonctionner, c'est bien la bonne ConnectionString qui est prise en compte. Mais au niveau du programme, après avoir fait F5, je peux voir que ce n'est toujours pas la connectionstring qui pointe vers la DB sélectionnée dans la combo.

    Moi pas comprendre

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 11
    Par défaut
    J'ai réussi!
    J'ai changé mon fonctionnement, j'ai carrément supprimé ma classe partial et j'ai tout fait au niveau de mon DomainService.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    public IQueryable<View_Connector> GetView_ConnectorAupif(string dbName, string serverName)
            {
                this.DbName = dbName;
                this.ServerName = serverName;
                this.CreateObjectContext();
                this.Initialize(this.ServiceContext);
                return this.ObjectContext.View_Connector.OrderByDescending(e => e.DateTime).Take(50);
            }
     
            public override void Initialize(DomainServiceContext context)
            {
                if (DbName != null && ServerName != null)
                {
                    string connString = EntityConnectionStringHelper.Build(
                                    ServerName = ServerName,
                                     DbName = DbName,
                                     ConfigurationManager.AppSettings.Get("DefaultLogin"),
                                     ConfigurationManager.AppSettings.Get("DefaultPassword"),
                                     "Models.ExportConnectorModel",
                                     false);
     
                    this.ObjectContext.Connection.ConnectionString = connString;
                }
                else
                    base.Initialize(context);
            }
    La méthode Initialize est donc appelée 2 fois mais au moins ça marche.

    Merci à toutes celles et ceux qui auront réfléchi sur ma question

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Se connecter à un service Wcf par un string
    Par eric.bryan dans le forum Services Web
    Réponses: 2
    Dernier message: 30/06/2015, 18h14
  2. [WCF RIA Services] Connection à Sharepoint : Security Error
    Par Joffrey Kern dans le forum Silverlight
    Réponses: 1
    Dernier message: 01/07/2011, 12h40
  3. Réponses: 7
    Dernier message: 23/03/2011, 14h10
  4. [JTable] Changer les colonnes de manière dynamique
    Par gg2laba dans le forum Composants
    Réponses: 3
    Dernier message: 03/10/2005, 23h39
  5. [Service] Changer le mode de demarrage ?
    Par esa dans le forum Langage
    Réponses: 6
    Dernier message: 10/11/2003, 15h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo