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

ASP.NET MVC Discussion :

Utilisation de Session pour instancier l'objet db EF dans le controleur


Sujet :

ASP.NET MVC

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Points : 11
    Points
    11
    Par défaut Utilisation de Session pour instancier l'objet db EF dans le controleur
    Bonjour,
    Je développe une application en Asp.net MVC, j'utilise EF, plusieurs base de données, j'ai déjà réussi à faire un constructeur de DATAMODEL qui accepte une chaine de connexion comme paramètre, lorsque je rentre des simples chaine, cela marche très bien, mais je souhaite récupérer la chaine de connexion à travers des variables de session.
    Code qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MyApp.MyAppDbContextContainer db1 = new MyApp.MyAppDbContextContainer(ClassConnection.construtMyCnx("System.Data.SqlClient", "test", "test", "test", "test", "MyAppDataModel").ToString());
    Ce que je souhaite faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyApp.MyAppDbContextContainer db1 = new MyApp.MyAppDbContextContainer(ClassConnection.construtMyCnx(Session["Provider], Session["ServerName], Session["DB"], Session["User"], Session["pASSWORD", Session["DataModel").ToString())
    .

    J'obtiens l'erreur suivante et je ne comprends pas, ce que cela veut dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     A field initializer cannot reference the non-static field, method, or property 'Controller.Session'
    Avez vous une idée ?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Il manque une guillement (") après provider et des crochets (]) après password et datamodel...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Ils sont correctes sur mon code, juste à force de faire rapide en tapant sur le forum que je me suis trompé, ms ça donne la même erreur même avec la syntaxe correcte

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Points : 1 077
    Points
    1 077
    Par défaut
    Session["xxx"] renvoi un objet, essaye de faire un ToString partout...

  5. #5
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Ton objet db1 est-il une variable dans une méthode ou un champ dans un contrôleur ? Si comme le message d'erreur semble le dire c'est un champ avec un initialisateur externe tu ne peux pas utiliser une propriété d'objet (en l'occurrence la session associée au contrôleur).

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Effectivement, la solution est de déclarer l'objet db1 comme un champ et l'instancier dans la méthode.
    Concrètement, c'est le code suivant :

    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
    32
    33
    34
    35
    36
    37
    38
    39
     
     
    public class MonControlleurController : Controller
        {
            string a, b, c, d, e, f;
            MonAppNameSpace.MonAppContextContainer db1;
            public ActionResult Index()
            {
                if (Session["Provider"] != null)
                {
                    a = (String)Session["Provider"];
                }
                if ((Session["ServerName"]) != null)
                {
                    b = (String)Session["ServerName"];
                }
                if ((Session["DbName"]) != null)
                {
                    c = (String)Session["DbName"];
                }
                if ((Session["User"]) != null)
                {
                    d = (String)Session["User"];
                }
                if ((Session["Password"]) != null)
                {
                    e = (String)Session["Password"];
                }
                if ((Session["DataModel"]) != null)
                {
                    f = (String)Session["DataModel"];
                }
     
                db1 = new MonAppNameSpace.MonApp(ClassConnection.construtMyCnx(a, b, c, d, e, f).ToString());
                var model = db1.MonModel;
                // code à executer
                return View();
            }
    }

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

Discussions similaires

  1. Variable utilisée pour instancier un objet
    Par Meta4 dans le forum Général Java
    Réponses: 7
    Dernier message: 20/06/2012, 01h02
  2. [Python] Est-ce une bonne idée d'utiliser des modules pour stocker des objets ?
    Par Neolander dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 05/04/2008, 14h45
  3. Utilisation des sessions pour un site en wml
    Par dondano dans le forum Langage
    Réponses: 2
    Dernier message: 05/01/2007, 11h26
  4. Réponses: 7
    Dernier message: 18/07/2006, 12h23
  5. utiliser un script pour inserer des objets 3D
    Par s_mihai dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/08/2005, 13h52

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