|
Can you tell me how to use the connection string value from the app.config file and not the hard codee values?
In a C# 2008 desktop/console application, I created the connections to the database using linq to sql. Everything worked fine until I moved the
code to point to a different database. Somehow the original database connections are being saved and the values from the app.config file
are not being used.
I tried to do what the following link: http://refat38.wordpress.com/2012/01/30/unpick-linq-to-sql-connection-string-from-application-settings/,
said to do however, I do not know what the following statement means to do from this link:
Now Right Click and open the Properties on your DAL or project containing your LINQ to SQL classes and remove the connection string “Application Setting” reference on the Settings tab.
I also tried to add the following to the *.designer.cs file:
base(ConfigurationManager.ConnectionStrings["esample.Properties.Settings.devtestConnectionString"].ConnectionString, mappingSource) and attached
a system.configuration file as a reference.
1. The following code is from the app.config file:
<connectionStrings>
<add name="esample.Properties.Settings.devtestConnectionString"
connectionString="Data Source=dev;Initial Catalog=devtest;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
2. The following is from the settings.settings file
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="esample.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="devtestConnectionString" Type="(Connection string)" Scope="Application">
<DesignTimeValue Profile="(Default)"><?xml version="1.0" encoding="utf-16"?>
<SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ConnectionString>Data Source=dev;Initial Catalog=devtest;Integrated Security=True</ConnectionString>
<ProviderName>System.Data.SqlClient</ProviderName>
</SerializableConnectionString></DesignTimeValue>
<Value Profile="(Default)">Data Source=dev;Initial Catalog=devtest;Integrated Security=True</Value>
</Setting>
</Settings>
</SettingsFile>
The following is from the settings.designer.cs file
namespace esample.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=dev;Initial Catalog=devtest;Integrated Security=True")]
public string devtestConnectionString {
get {
return ((string)(this["devtestConnectionString"]));
}
}
}
}
The following is from the *.designer.cs
namespace esample
{
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Data;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using System.Linq.Expressions;
using System.ComponentModel;
using System;
using System.Configuration;
[System.Data.Linq.Mapping.DatabaseAttribute(Name="devtest")]
public partial class esampleDataContext : System.Data.Linq.DataContext
{
private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
public esampleDataContext() :
base(global::esample.Properties.Settings.Default.devtestConnectionString, mappingSource)
{
OnCreated();
}
public esampleDataContext(string connection) :
base(connection, mappingSource)
{
OnCreated();
}
Can you show me code and/or tell me how to solve this problem so I can obtain the value from the app.config file?
|
|
|
|
|
If you have the database code in a different project than the main project, the connection string could have been saved in that project, but is still using the app.config in the main project. I know I have seen this in Entity Framework.
|
|
|
|
|
If that is the case, how do you fix the problem?
|
|
|
|
|
You edit the app.config that's in the main project.
|
|
|
|
|
As the man stated, copied and pasted the connection string from the library project to the main project.
|
|
|
|
|
if I remember correctly:
Find your "context" class. Propably something named (your DB name)DataContext. Press F12 to find file with it. It is autogenerated. Connection string is saved either as Attribute on that class or as string in 1 of constructors. Delete it.
This should work but if your app does not work I bet there is something wrong also. Like connection strings names differ.
No more Mister Nice Guy... >: |
|
|
|
|