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

Accès aux données Discussion :

Projet Web + DLL : ConnectionString : cohabitation


Sujet :

Accès aux données

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut Projet Web + DLL : ConnectionString : cohabitation
    Bonjour à tous !

    Je me retrouve face à un problème.

    J'ai une solution qui contient à la base :
    - un projet siteweb (Webform, Vb.net / SQL Server / Framework 4.5.2)
    ce projet contient un web.Config qui contient les chaines de connexions dans la section "configuration>connectionStrings :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <add name="BDD1_ConnectionString" connectionString="Data Source=192.0.x.x;Initial Catalog=BBase1;Persist Security Info=True;User ID=monid;Password=monPwd" providerName="System.Data.SqlClient" />
    <add name="BDD2_ConnectionString" connectionString="Data Source=192.0.x.x;Initial Catalog=BBase2;Persist Security Info=True;User ID=monid;Password=monPwd" providerName="System.Data.SqlClient" />
    J'utilise ces chaines de connexions pour le linqToSQL dans le projet.
    régulièrement on ajoute des tables, procédures via les fichier dbml (double clic, et dans le designer on glisse les tables, procédures et fonctions)

    quand on est en "Proto" dans le web.config, on commente ou décommente les mêmes lignes qui ont comme changement les adresses IP.

    Récemment, je dois externaliser une partie sous forme de DLL car on doit pouvoir l'utiliser dans des projets de collègues en WPF.
    et donc ce projet web va devoir lui aussi utiliser cette DLL.

    Donc dans la DLL, je vais devoir utiliser certaines bases et tables présentes actuellement dans mon projet web.

    J'ai donc créer dans ma solution un second projet pour la librairie (idem vb.net).
    Dans ce projet j'ai un app.config qui fait je suppose le même office que web.config dans l'autre projet.
    et c'est là que ça se complique, comment mettre en "relation" les 2 ? je veux surtout éviter que d'un côté on soit sur proto et l'autre sur prod, que les tables des dbml n'ai pas le même nombre de champs par exemple.

    Je n'ai pas pour habitude "d'externaliser" une partie du code.

    Merci d'avance pour le partage de votre expérience et votre aide.
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 025
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 025
    Points : 5 462
    Points
    5 462
    Par défaut
    J'ai envie de dire que ça dépend de comment tu vas réellement chercher la chaine de connexion.

    Si dans ta DLL, le code utilise ConfigurationManager.AppSettings["BDD1_ConnectionString"], alors ce n'est pas le app.config de ta DLL qui sera lu, mais celui de ton projet executant.

    Dans ce cas là, il faut indiquer à ceux qui utilise ta DLL qu'ils ont besoin de saisir ces clés dans leurs app.config.

    Tu peux utiliser aussi un .config custom dans ta DLL, que tu fourniras avec :
    https://stackoverflow.com/questions/...-a-library-dll

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    justement, le mieux serais que la Dll utilise la chaine de connexion présente dans le projet.
    c'est à dire quel vienne "piocher" les informations dans le Web.config.
    mais il faut que le nommage soit identique.

    Actuellement pour tout nos projets, on se base comme je l'ai dis sur ce web.config.

    et justement comment "dire" à la Dll qu'elle récupére ce qui est présent dans le web.config plutôt que dans son "état seul".

    Je vais tester sur une solution "vide" pour voir avec un projet siteweb et un projet Dll.
    J'ai du mal à voir.
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2006
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Je viens de me faire un exemple pendant le repas avant de repartir sur mon projet en cours.

    Création d'un projet WebSite vide (vb.net Framework 4.5.2) et création de la solution. ajout dans la solution d'un projet (Librairie, idem)

    Ajout de référence à mon website de la dll issu de la même solution.

    Dans la Librairie, pour le moment juste ceci pour vérifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public Class MaClassPourDll
     
        Public Property MaProperty As String = "Ma DLL"
     
    End Class
    Dans mon siteWeb, j'ajoute un fichier de type DBML (ça m'indique que ça va créer le fichier dans appCode ...), j'ajoute une connexion vers une Base (Proto) et je glisse une table ou je sais qu'il y a une sacrée différence d'enregistrements entre Prod/Proto.

    ConnectionString dans web.config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <connectionStrings>
        <add name="BDD1ConnectionString" connectionString="Data Source=192.0.x.x;Initial Catalog=BDD1;Persist Security Info=True;User ID=idUser;Password=PWD" providerName="System.Data.SqlClient" />
      </connectionStrings>

    J'ai ajouté une webform ASPX :
    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
     
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
     
    <!DOCTYPE html>
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>                      
     
                <asp:Label runat="server" id="propClass" Text=""></asp:Label>
                <br />
                <asp:Label runat="server" ID="lNbRecord"></asp:Label>
     
            </div>
        </form>
    </body>
    </html>
    code coté vb :
    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
     
     
    Partial Class _Default
        Inherits System.Web.UI.Page
     
        Private Sub _Default_Load(sender As Object, e As EventArgs) Handles Me.Load
     
            If IsPostBack = False Then
     
                Dim dd As New LibTest.MaClassPourDll()
                propClass.Text = String.Format("Valeur property : {0}", dd.MaProperty)
     
                Dim nbRecord As Integer
                Using dc As New DataClassesDataContext
                    nbRecord = dc.tNumerisation.Count
                End Using
     
                lNbRecord.Text = String.Format("Nb Record (Appel WebForm) : {0}", nbRecord)
     
            End If
     
        End Sub
    End Class
    Le résultat sur la page web :

    Valeur property : Ma DLL
    Nb Record (Appel WebForm) : 19


    Maintenant (surement demain midi), il faut que je fasse le même genre d'appel dans la Dll. mais du coup, faut-il que je fasse comme j'ai fais pour ajouter mon dbml dans le projet siteweb dans la dll et du coup le même nom de fichier "DataClasses", la même table etc..
    -----------------------------------------
    à l'origine PHP/Mysql. Pro : Asp.net/Vb/SQL/Webform siteweb

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

Discussions similaires

  1. [IIS] problème de création un projet Web
    Par kouta20 dans le forum IIS
    Réponses: 20
    Dernier message: 02/05/2007, 17h10
  2. [projet Tomcat][jar] Importer un .jar à un projet Web
    Par El Saigneur dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 24/06/2005, 17h06
  3. [myeclipse] [cvs] projet web commun à partir de 2 cvs
    Par Aldo dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/03/2005, 13h44
  4. [WSAD]Organisation de projet Web
    Par thibaut dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/10/2004, 14h05

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