Solved

Creating production, testing, and development connection strings for a DLL

Posted on 2008-10-17
5
733 Views
Last Modified: 2013-12-17
I'm developing a site using Visual C# 2008. I have a solution with the following projects:

Web site
Business Logic Layer (BLL)
Data Access Layer (DAL)

When I publish the website, the BLL and DAL are compiled into DLLs, and placed in the bin directory of the website.

I want to have the DAL use different connection strings when I deploy the application to development, testing, and production environments. Right now, though, the settings in app.config file for the DAL are embedded into the DLL when it's compiled, rather than read from an external file.

While one could obviously switch all the settings to the production settings before publishing the site, this introduces a high likelihood of error (leaving the development settings on in prod, using production settings in dev, etc). I'd like to have the DAL read its configuration settings in its deployment environment.

How best to do this?
0
Comment
Question by:incapital
  • 3
  • 2
5 Comments
 
LVL 13

Expert Comment

by:TechTiger007
ID: 22744114
if you are using sql server you can create alias with same name in production and development server and use  the alias name in connection string

details on creating alias
http://www.alpesh.nakars.com/blog/howto-configure-port-alias-for-sql-server/


If you are using oracle as backend, you can create an entry in TNSNames.Ora file with connection name same as that of production server but internally you can give the entries for the development machine
details on creating tns names
http://aspen.ithaca.edu:7778/pls/portal/docs/PAGE/TOPLEVELPAGES/ARGUS_HOME_PG/TAB59/ARGUS_RECOURCE_CENTER/INSGNG01.PDF

basically both does the same job and this is what we do to avoid the issue you mentioned


0
 
LVL 3

Author Comment

by:incapital
ID: 22744875
Thank you for your reply. While what you describe would work, I'd prefer to handle this within the application code itself. That would allow me to extend the same solution to other areas of the application (beyond connection strings) if needed.
0
 
LVL 13

Expert Comment

by:TechTiger007
ID: 22745423
ok.
If you want to handle that in code then

have a configuration file which stores connection string for production, development and testing servers. Have another configuration that will specify which configuration to use.
in your app.config
<add key="production" value=""/>
<add key="development" value=""/>
<add key="testing" value=""/>
<add key="activeconnection" value ="production"/>

in your code you can do
string activeconnection = ConfigurationManager.AppSettings["activeconnection"];
string connectionstring = ConfigurationManager.AppSettings[activeconnection];

0
 
LVL 3

Author Comment

by:incapital
ID: 22757206
Thank you for the reply. I'll give it a try.
0
 
LVL 3

Accepted Solution

by:
incapital earned 0 total points
ID: 22758567
Thank you for your suggestion. The app config file doesn't get deployed with the web site, so that wasn't a viable option.

The solution was to remove the default value that was baked into the dll at compile time, and insert a new value in the web config. I can then point the connection strings settings to read from a local file:

<connectionStrings configSource="myLocal.config"/>

and then myLocal.config contains:

<connectionStrings>
    <remove name="DAL.Properties.Settings.my_connection"/>
    <add name="DAL.Properties.Settings.my_connection" connectionString="Data Source=myDataSource;Initial Catalog=myCatalog;User Id=myUser;Password=myPassword;" />
</connectionStrings>

Mods, please close question at your convenience.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
.NET Error 7 42
How Can I fix my MouseHover Event? 14 27
Open a folder with partial name 14 29
Library to convert HTML to PDF. 8 45
This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
For a while now I'v been searching for a circular progress control, much like the one you get when first starting your Silverlight application. I found a couple that were written in WPF and there were a few written in Silverlight, but all appeared o…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now