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é
    [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 !!!!
    http://ultimatecorp.eu/wpf/

  2. ###raw>post.musername###
    Membre éprouvé
    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
      0  0

###raw>template_hook.ano_emploi###