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

Entity Framework Discussion :

[ConexionString] par defaut en 6.2


Sujet :

Entity Framework

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    1 453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 1 453
    Points : 1 278
    Points
    1 278
    Par défaut [ConexionString] par defaut en 6.2
    Bonjour,
    pour des raisons pratiques (bascule, partage etc) j'aimerais pouvoir moi même changer ma chaîne de connexion
    et pas forcement presente dans un fichier app.config

    bref si j'ai la chaine suivante (dans app.config)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <add name="XXXEntities" connectionString="metadata=res://*/ModelXXX.csdl|res://*/ModelXXX.ssdl|res://*/ModelXXX.msl;provider=System.Data.SqlClient;provider connection string="data source=xxx\SQLEXPRESS;initial catalog=XXX;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
    si j'utilise le constructeur par defaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public partial class XXXEntities : DbContext
        {
            public XXXEntities()
                : base("name=XXXEntities")
            {
            }
    avec un fichier app.config ca marche très bien

    si par contre j'utilise le constructeur que j'ai rajouté, en y passant la chaine de connexion qui se trouve dans le fichier app.config comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     public partial class XXXEntities : DbContext
        {
            public XXXEntities(string connexionString) :
                base(connexionString)
            { }      
        }
    avec le code d'execution suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     // connexion base
                string cnxbase = @"metadata=res://*/ModelXXX.csdl|res://*/ModelXXX.ssdl|res://*/ModelXXX.msl;provider=System.Data.SqlClient;provider connection string="data source=xxx\SQLEXPRESS;initial catalog=XXX;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"";
                XXXEntities XXX = new XXXEntities(cnxbase);
                var v = XXX.User.ToList();
    j'ai une erreur = Mot clé non pris en charge : 'data source'.

    quelqu'un a t-il une petite idée ?
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    1 453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 1 453
    Points : 1 278
    Points
    1 278
    Par défaut
    bon j'ai trouvé avec la regex suivant on peut recuperer les informations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public static string cnxDeco = @"^metadata=(?<meta>.+);provider=(?<provider>.+);provider connection string='(?<cnx>.+)'$";
    et 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
     Regex regex = new Regex(cnxDeco);
                Match m = regex.Match(appConfString.Replace(""", "\'").Replace("\"","'"));
                var entityBuilder = new EntityConnectionStringBuilder();
                try
                {
                    if (m.Success)
                    {
                        entityBuilder.Metadata = m.Groups["meta"].ToString();
                        entityBuilder.Provider = m.Groups["provider"].ToString();
                        entityBuilder.ProviderConnectionString = m.Groups["cnx"].ToString();
                        return new XXXEntities(entityBuilder.ConnectionString);
                    }
                    else
                    {
                        throw new Exception("Chaine de connexion invalide = \"" + appConfString + "\"");
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                return null;
    on peut utiliser la chaine generé par entity
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!

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

Discussions similaires

  1. [Pb : champ Text = pas de valeur par defaut ?]
    Par mat_dum dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 18/08/2003, 12h57
  2. sorte de valeur par defaut
    Par sampq dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/07/2003, 11h59
  3. [CR 8.5] plages par defaut
    Par .:Tieri:. dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 23/07/2003, 10h52
  4. [BP]Détermination de l'imprimante par défaut
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 01/06/2003, 09h52
  5. Valeur par defaut 'True' dans un champ de type bit
    Par Mouse dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/03/2003, 15h26

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