8

每当您首先使用 EF 代码创建应用程序时,您都可以看到添加了以下 web.config 键:

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

您可以很容易地看到它不包含特定于应用程序的信息。更改这些值不会影响应用程序的运行方式,因此我认为它一定是某种不必要的 EF 工件,可能是设计人员需要的。但是,如果您完全删除此密钥,应用程序将在启动时抛出 ConfigurationError。这把钥匙的真正目的是什么?

4

3 回答 3

6

您引用的连接字符串:

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

与实体框架无关。它是所有非空 ASP.NET 项目(包括 WebForms/WebPages 和 MVC 框架)模板的一部分。它用于连接到将驻留在您的App_Data文件夹中的嵌入式数据库,并允许您使用 ASP.NET 提供程序模型,而无需 SQL Server 实例。如果您不确定,请查看connectionString该部分的默认值Membership

<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
  </providers>
</membership>
于 2012-12-30T08:41:40.910 回答
2

您可以很容易地看到它不包含特定于应用程序的信息

您希望从连接字符串中获得哪些特定于应用程序的信息?!

这把钥匙的真正目的是什么?

这是 Visual Studio 2012 中的一项新功能。它称为 localdb。mdf 文件始终位于项目的 app_data 文件夹中。引入它是为了方便开发人员,让他们在开发时不必担心后端。

于 2012-12-30T04:24:10.227 回答
1

来自 Web 或 app.config 的片段显示很可能是连接字符串条目。

例如

<connectionStrings>
<add name="NameOfYourContext" connectionString="Data Source=SQLServerHost;Initial Catalog=The DBName;Integrated Security=True;MultipleActiveResultSets=True;App=EntityFramework"
   providerName="System.Data.SqlClient" />

这个例子如果用于 SQL server 你的 SQL express。差异突出了预期用途。

即:启动(http 服务)查找 web.config 或 WPF/Console/Forms 应用程序查找 App.config。

实体框架查找具有上下文名称的连接字符串(请参阅构造函数或您的上下文)。这住

 <configuration>
      <connectionStrings>

通过添加元素。

您可以拥有任意数量的连接字符串。EF 和其他进程可以使用相同的连接字符串。它不是人工制品,实际上 EF 重用了一个长期建立的 .net 功能。例如 http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.connectionstrings.aspx

我假设您的上下文称为 ApplicationServices ,这引起了混乱。或者该名称是您使用此类成员数据库的服务功能使用的默认连接名称。http://msdn.microsoft.com/en-us/library/bb547119%28v=vs.100%29.aspx 例如,您可能在配置中有一个部分,其中有一个“ApplicationServices”的“connectionStringName”

于 2012-12-30T05:25:02.620 回答