【问题标题】:What is the purpose of ApplicationServices connection string in Entity Framework Code First scenario?Entity Framework Code First 场景中 ApplicationServices 连接字符串的用途是什么?
【发布时间】:2012-12-14 19:42:01
【问题描述】:

当您首先使用 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。这把钥匙的真正用途是什么?

【问题讨论】:

    标签: c# .net entity-framework connection-string


    【解决方案1】:

    你引用的连接字符串:

    <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 实例。如果您不确定,请查看 Membership 部分的默认 connectionString 值:

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

    【讨论】:

      【解决方案2】:

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

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

      这把钥匙的真正用途是什么?

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

      【讨论】:

        【解决方案3】:

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

        例如

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

        这个例子如果用于 SQL 服务器你的 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”

        【讨论】:

          猜你喜欢
          • 2011-10-24
          • 2011-05-06
          • 1970-01-01
          • 2023-04-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多