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

2023-11-26

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

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      </providers>
  </entityFramework>
</configuration>

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

var strings = ConfigurationManager.ConnectionStrings;

结果:

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

由于我喜欢定义自己的连接字符串,因此我会将其添加到我的 app.config 中:

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

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

[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}

为什么我可以看到两个连接字符串?如果第一个是默认的,那么我创建一个后就不会忘记它吗?

Thanks


您看到的第一个连接字符串来自机器配置从您的电脑。它有以下部分:

<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 数据库的默认连接字符串。如果您的应用程序确实不需要它,您可以编辑机器配置文件(不推荐)或clear添加您的连接字符串之前:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • Firebase 存储安全规则

    我刚刚开始使用 Firebase 并且能够读取 写入 编辑 删除数据库 在我的应用程序中 我仅向用户显示数据 如果他 她有权访问数据 我通过创建一个用户节点和另一个节点 称为服务 并引用该用户子节点中的服务来做到这一点 我以前从未使用过 F
  • 如何在express router中使用body-parser?

    我有一个具有对象的 post api 但我无法在控制台中打印它的抛出未定义我以为我缺少主体解析器 但在添加主体解析器后我看到错误body parser deprecated bodyParser use individual json ur
  • 当 SQL 数据库添加新行而不进行轮询时,C# Azure 函数触发

    有没有一种方法可以在每次将新数据库行添加到 SQL azure 数据库时调用 Azure 函数 理想情况下没有任何基于计时器的轮询 我知道这可以在 blob 存储上完成 但没有找到在 Azure 函数上执行此操作的方法 提前致谢 Funct
  • 未命名命名空间访问规则

    我正在查看部分7 3 1 1在 C 03 标准中 期望找到未命名命名空间中定义的项的访问规则的一些描述 对于未命名的命名空间 规则似乎有点不同 因为您无法完全限定对其中的项目的访问权限 我知道至少在同一个翻译单元中 人们可以访问未命名名称空
  • 无法在带有 glassfish 服务器的 ubuntu 上使用 intelliJ 在调试模式下运行 Web 应用程序

    在 ubuntu 12 04 上的 intelliJ 12 0 和 glassfish 3 1 2 2 中 我尝试在调试模式下启动我的 Web 应用程序 但收到以下错误消息 Error starting domain domain1 The
  • 在 Ruby/Rails 中读取远程 MP3 文件的 ID3 标签?

    使用 Ruby 如何解析远程 mp3 文件的 ID3 标签而不将整个文件下载到磁盘 这个问题已经被问到Java and 银光 但没有红宝石 Edit 查看 Java 答案 似乎可以 HTTP 支持 仅下载文件的尾部 即标签所在的位置 这可以
  • Apache Camel MDC 从 Body 添加字段

    我正在使用 apache Camel 并希望使用 MDC 将某些键添加到我的日志中 我通过官方Camel MDC 日志记录文档这非常棒 我可以毫不费力地记录我的routeId 我还需要添加来自骆驼身体的字段 最坏的情况是我可以在所有路由中手
  • @ViewScoped 托管 bean 在回发期间加载多次

    我在 jsf Facelet 上有一个日历 编辑器 文件上传和 dataTable primefaces 控件 代码如下
  • Android中如何获取文件的绝对路径?

    btnimport setOnClickListener new View OnClickListener Override public void onClick View v Intent fileintent new Intent I
  • 如何在android中的每个标记(多个标记)上打开信息窗口?

    由于我使用的是 Google 地图 v2 并且我想打开多个制造商的信息窗口 我已经使用单个标记完成了此操作 并且还使用了 show info window 但它适用于最后一个标记并且仅适用于一个 我只想要安卓 public class Ma
  • SocketIOException:客户端中出现意外的握手错误

    以下异常 SocketIOException Unexpected handshake error in client OS Error errno 12268 0 SecureFilterImpl handshake dart io pa
  • OData V4 + WebAPI 按枚举的 Int 值过滤?

    OData V4 有枚举支持 但似乎您必须仅按命名空间进行搜索 现在如何通过值而不是文本表示进行搜索 在 odata V3 中 您可以查询 filter Status eq 35 where 35 is Complete在枚举中 即使该字段
  • PostgreSQL 中的混合隔离级别

    如果任何其他会话使用例如可串行化事务 这是否重要 自动提交还是 READ COMMITED 隔离级别 换句话说 当从多个进程 线程 或其他需要注意的事项 访问数据库时 混合隔离级别 和自动提交 是否存在任何危险 请注意 我知道 普通 问题
  • 在 Node.js 上通过 XMPP 连接到 Google Talk

    我尝试过对 Node js 使用各种 XMPP 库 但在连接到 Google Talk 的 XMPP 服务器时遇到问题 我想联系并查看朋友的状态 但我什至无法出门 我有一个通过 Google Apps for Domains 托管的个人域
  • 如何在已 root 的设备上使用文件资源管理器?

    Eclipse 已连接到我已 root 的手机 我可以运行调试会话并查看 LogCat 消息 我还可以看到电话Devices查看在DDMS观点 但是 当我打开File Explorer视图 以相同的视角 我明白了nothing 我可以发誓我
  • 使用 ruby​​ mechanize 捕获超时错误

    我有一个机械化功能可以让我退出网站 但在极少数情况下我会超时 该功能涉及转到特定页面 然后单击注销按钮 有时 当进入注销页面或单击注销按钮时 机械化会遇到超时 代码会崩溃 所以我做了一个小小的救援 它似乎正在工作 如第一段代码所示 def
  • 为什么我的查询不可更新?

    我正在尝试在 Access 中为用户构建可更新的视图 基本上 基础表如下所示 Accounts accountId accountName accountHolder TransactionStatements statementId ac
  • Thread.Sleep(0) 不按描述工作?

    我目前正在阅读这篇优秀的文章关于线程并阅读以下文本 Thread Sleep 0 立即放弃线程当前的时间片 自愿将CPU交给其他线程 我想测试一下 下面是我的测试代码 static string s static void Main str
  • SQL:如何将 Oracle 表中的 100,000 条记录拆分为 5 个块?

    我试图找出将具有 100 万条以上记录的表中的前 100 000 条记录拆分为 5 五 20 000 条记录块以放入文件中的方法 也许某些 SQL 会获取 20 000 条记录的每 5 个块的最小和最大 rowid 或主 id 因此我可以将
  • 自动生成的默认连接字符串与手动添加的连接字符串

    假设我有一个简单的 WPF 应用程序 使用 Entity Framework Code First 创建数据库 连接到它并显示一些数据 从一开始我就不想担心连接字符串 因此在通过 Nuget 添加实体框架引用后 我将获得自动生成的 app