在没有连接字符串的情况下处理项目
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" />
我正在尝试在内网服务器上发布我的网站。从网站和建议我了解到我必须更改连接字符串以指向 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" />