从Web.Config <appsettings>部分C#/ MVC </appsettings>连接到数据库

时间:2013-04-25 21:49:20

标签: c# sql-server asp.net-mvc connection-string

我目前使用

连接到数据库

的Web.Config

<connectionStrings>
    <add name="MVCDatabase" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\MVCDatabase.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

控制器

public MVCDatabase db = new MVCDatabase();

型号

public class MVCDatabase : DbContext
{
    public DbSet<Things> Tables2 { get; set; }
    public DbSet<OtherStuff> Table2{ get; set; }
} 

有没有办法将数据库连接字符串,它仍在控制器等中运行到Web.Config文件中的[appSettings]部分?

Web.Config示例

<appSettings>
     <add key="ConnectionString" value="Server=dbserver; Database=mvcdatabase; User Id=username; Password=password"/>
</appSettings>

修改(修复)

搜索负载后,我找到了我需要并将其放入generate a machine key并将其放入我的web.config文件中

类似这样的事情

<machineKey validationKey="8AA518FA814CFC6572AFD7E3E1139D1AE5A3CE9B4952B2BD2DABC1428C3CC85842A4F1060E02F8EDFA2FD5CE7AAD0F67EF9842AA96186544F4A6D5ED3444AC48" decryptionKey="9F2CABCCBC0EA7CD6B96BD263AB78962D1577AB557BB7422" validation="SHA1" />

1 个答案:

答案 0 :(得分:2)

试试这个:

  1. 参考System.Configuration

  2. 在文件顶部添加:

    using System.Configuration;
    
  3. 然后通过添加构造函数来更改模型,如下所示:

    public class MVCDatabase : DbContext
    {
        public MVCDatabase() : base(ConfigurationManager.AppSettings["ConnectionString"])
        {
        }
    
        ...
    }
    

    然后按照问题中的说明设置配置文件。可以肯定的是,构造函数将接受config元素的名称(它假定它在connectionStrings上的位置)或显式连接字符串,ConfigurationManager应该返回。