简体   繁体   中英

How do I set a default connection string in a console application?

In my MVC projects with a web interface, I'm used to setting the Connection String in the Web.Config file.

However, now I'm making a bog standard console application - also with a database hook, but how do I set the connection string globally for the application?

At the moment, I am setting

var dbIndex = new DBContext();
dbIndex.Database.Connection.ConnectionString = 
    "Data Source=USER-PC;Initial Catalog=TextProject.DBContext;" + 
    "Integrated Security=True;MultipleActiveResultSets=True";

but I have to set this connectionstring property every time, in all function calls. Is there a way to set a global connection string when I don't have a web.config?

So I think what your saying is that Entity Framework (I assume that is what you are using) looks for defaultConnection connection string.

You can try putting it in the app.config file as suggested by others, but I'm not sure if this will be automagically picked up by EF.

What you could do, if it doesn't work, is to create new class which inherits DbContext -

public class MyDbContext : DbContext
{
    public MyDbContext() : base()
    {
        var cs = ConfigurationManager.ConnectionStrings["defaultConnection"]
                                     .ConnectionString;

        this.Database.Connection.ConnectionString = cs;                
    }
}

App.config is the equivalent to a Web.config for console or .exe programs.

  • Add a reference to System.Configuration on any project that you want to use the ConnectionStrings of the app.config
  • Add a AppConfig to your entry point project. This is the project that is executed. (eg console .exe)
  • Add the connection string in the <connectionStrings></connectionStrings> section of the app.config

Now place the connection string in your app.config

string connStr =ConfigurationManager.ConnectionStrings["ConnName"]
  .ConnectionString;

App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="ConnName" connectionString="Data Source=USER-PC;Initial Catalog=TextProject.DBContext;Integrated Security=True;MultipleActiveResultSets=True" />
 </connectionStrings>
</configuration> 

You can put the same element in a App.config file for the console application and access it the same way you would a Web.config. Related: What is App.config in C#.NET? How to use it?

As others have said put your connection string in the App.config file.

Regarding Entity Framework. If you are using Entity Framework (EF) version 6.2.0 perhaps earlier EF will automatically look for a connection with the same name as the class that inherits from DbContext .

If your class is

public class MyDatabaseContext : DbContext 
{
    // other code
}

EF will look for a connection string with a name like this <add name="MyDatabaseContext" ...

You can also set the name in the constructor like so

public class MyDatabaseContext : DbContext 
{
  public MyDatabaseContext() : base ("name=defaultConnection")
  {
    // other code
  }

  // other code
}

In this case your connection string name can be <add name="defaultConnection" ...

The solution is very simple and easy. Just right click and set the project as start-up project. entity framework by default picks the start-up project and uses the connection string inside of App.config or web.config

Please refer to this:

在此输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM