在没有连接字符串的情况下处理项目

Working on a project without a connection string

我正在尝试在内网服务器上发布我的网站。从网站和建议我了解到我必须更改连接字符串以指向 Intranet 服务器中的数据库。在尝试这样做时,我知道我的 web.config 中没有连接字符串。或者,也许我没有与网站上提到的类似的东西。我是否应该在开始处理项目之前明确添加连接字符串?但是我的项目在我的本地机器上使用本地数据库运行良好。

那么,在使用本地数据库时,项目是否可以在没有连接字符串的情况下工作,或者我是否遗漏了一些非常重要的东西?现在,当我需要发布项目时,我可以在 web.Config 文件中添加一个连接字符串吗?我的 web.release 中有一个连接字符串部分被注释掉了。我应该取消注释 web.release 中的连接字符串还是在 web.config.

中添加新的连接字符串

Web.Config

<configuration>
  <configSections>
    <section name="entityFramework" requirePermission="false" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </configSections>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <authentication mode="Windows" />
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <!-- So many dependent assembly -->
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

Web.Release.config

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <!--
    <connectionStrings>
      <add connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" name="MyDB" xdt:Locator="Match(name)" xdt:Transform="SetAttributes" />
    </connectionStrings>
  -->
</configuration>

我正在使用 Visual Studio Express 2013 网页版。开发的应用程序是一个 MVC5 Web 应用程序。数据库使用本地数据库。但是我已经使用 SSMS 将数据库复制到 Intranet 服务器中。

更新:添加了配置详细信息

根据评论和回答,我在 web.config

中添加了以下内容
<entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
   </providers>
</entityFramework>
<connectionStrings> 
    <add
    name="TEDALS_Ver01.DAL.TedalsContext"
    connectionString="Server=FE0VMC0643; Database=TeDaLSdev; "
    providerName="System.Data.SqlClient" />

</connectionStrings> 

这是我在数据库属性中的连接字符串

Data Source=FE0VMC0643;Initial Catalog=TeDaLSdev;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False

So is it possible that a project can work without a connection string when working with local database or am I missing something really important?

如果您正在使用 Entity Framework(我不知道其他 ORM)并且您没有指定连接字符串,它将在内部创建一个指向 LocalDB 或 SQLExpress 的全名你的 DbContext.

Entity Framework > Get Started > Connections and Models中有解释:

If you have not done any other configuration in your application, then calling the parameterless constructor on DbContext will cause DbContext to run in Code First mode with a database connection created by convention. […] uses the namespace qualified name of your derived context class […] as the database name and creates a connection string for this database using either SQL Express or LocalDb. If both are installed, SQL Express will be used.

如果您的数据库不遵循 Entity Framework 建立的约定,那么您要么修改数据库以使其遵循约定,要么添加一个连接字符串供 Entity Framework 使用。

如果你的DbContext

namespace MySolution.MyApplication.Contexts
{
    public class MyContext : DbContext
    {
        […]
    }
}

您的 (localdb)\MSSQLLocalDB / localhost\SQLExpress 实例中有一个名为 MySolution.MyApplication.Contexts.MyContext 的数据库,或者将以下连接字符串添加到您的 App.config / Web.config

<add
    name="MySolution.MyApplication.Contexts.MyContext"
    connectionString="Server=myServerAddress; Database=myDataBase; User Id=myUsername; Password=myPassword;"
    providerName="System.Data.SqlClient" />