自动生成的默认连接字符串与手动添加的字符串

 轻松淘2008c_555 发布于 2023-01-08 12:49

假设我使用Entity Framework Code First创建了简单的WPF应用程序来创建数据库,连接到它并显示一些数据.从开始我不想担心连接字符串,所以在通过Nuget添加entityframework引用后,我将获得自动生成的app.config,如下所示:



  
    
    

我将运行test并观察连接字符串:

var strings = ConfigurationManager.ConnectionStrings;

结果:

[0] = {data source=.\SQLEXPRESS;Integrated Security=SSPI;attachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true}

由于我想定义自己的连接字符串,我将把它添加到我的app.config中:


    

因此,当我再次运行测试并观察连接时,我可以看到现在有两个:

[0] = {data source=.\SQLEXPRESS;Integrated Security=SSPI;attachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true}
[1] = {data source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\myDb.mdf;Integrated Security=True}

为什么我能看到两个连接字符串?如果第一个是默认的,一旦我创建了它,是否应该忘记它?

谢谢

1 个回答
  • 您看到的第一个连接字符串来自PC上的machine.config.它有以下部分:

    <connectionStrings>
         <add name="LocalSqlServer" 
              connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
              providerName="System.Data.SqlClient"/>
    </connectionStrings>
    

    其中定义了ASP.NET数据库的默认连接字符串.如果您的应用程序确实不需要它,可以在添加之前编辑machine.config文件(不推荐)或清除连接字符串:

    <connectionStrings>
        <clear />
        <add name="MyContext" 
             connectionString="data source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\myDb.mdf;Integrated Security=True" 
             providerName="System.Data.SqlClient" />
    </connectionStrings>
    

    另请注意 - Entity Framework不使用此连接字符串.默认情况下,它使用SQLEXPRESS服务器和数据库,其名称等于DbContext类的全名.您可以通过访问来检查它context.Database.Connection.ConnectionString.

    2023-01-08 12:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有