在我的带有Web界面的MVC项目中,我习惯在Web.Config文件中设置连接字符串。
但是,现在我正在制作一个bog标准控制台应用程序 - 也使用数据库挂钩,但如何为应用程序全局设置连接字符串?
目前,我正在设置
var dbIndex = new DBContext();
dbIndex.Database.Connection.ConnectionString =
"Data Source=USER-PC;Initial Catalog=TextProject.DBContext;" +
"Integrated Security=True;MultipleActiveResultSets=True";
但是我必须在所有函数调用中每次都设置此connectionstring属性。当我没有web.config时,有没有办法设置全局连接字符串?
答案 0 :(得分:5)
所以我认为你的意思是实体框架(我假设你正在使用它)寻找defaultConnection
连接字符串。
您可以尝试按照其他人的建议将其放入app.config
文件中,但我不确定这是否会由EF自动获取。
如果不起作用,你可以做的是创建一个继承DbContext
的新类 -
public class MyDbContext : DbContext
{
public MyDbContext() : base()
{
var cs = ConfigurationManager.ConnectionStrings["defaultConnection"]
.ConnectionString;
this.Database.Connection.ConnectionString = cs;
}
}
答案 1 :(得分:3)
App.config相当于控制台或.exe程序的Web.config。
ConnectionStrings
的任何项目上添加对System.Configuration的引用<connectionStrings></connectionStrings>
部分添加连接字符串
现在将连接字符串放在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>
答案 2 :(得分:0)
您可以将相同的元素放在控制台应用程序的App.config文件中,并以与Web.config相同的方式访问它。 相关:What is App.config in C#.NET? How to use it?
答案 3 :(得分:0)
正如其他人所说,将您的连接字符串放入App.config
文件中。
关于实体框架。如果您使用的是Entity Framework(EF)版本6.2.0,则可能是更早的EF会自动查找与从DbContext
继承的类同名的连接。
如果你的班级是
public class MyDatabaseContext : DbContext
{
// other code
}
EF将寻找一个名称如下的连接字符串
<add name="MyDatabaseContext" ...
您也可以像这样在构造函数中设置名称
public class MyDatabaseContext : DbContext
{
public MyDatabaseContext() : base ("name=defaultConnection")
{
// other code
}
// other code
}
在这种情况下,您的连接字符串名称可以为<add name="defaultConnection" ...
答案 4 :(得分:-1)