1

我試圖在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年網絡。 Devloped應用程序是一個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 
+0

@albireo:感謝編輯:) – Vini

回答

3

那麼,這可能是一個幻燈在使用本地數據庫時,ct可以在沒有連接字符串的情況下工作,或者我錯過了一些非常重要

如果您使用實體框架(我不知道其他的ORM),你沒有指定一個連接字符串,它會在內部使用您DbContext的全名創建一個指向的LocalDB或的SQLExpress 。

它在Entity Framework > Get Started > Connections and Models解釋說:

如果您還沒有這樣做在你的應用程序的任何其他的配置,然後調用上的DbContext參數的構造函數會造成的DbContext在代碼優先模式,按照慣例創建一個數據庫連接運行。 [...]使用派生上下文類的命名空間限定名作爲數據庫名稱,並使用SQL Express或LocalDb爲此數據庫創建連接字符串。如果兩者均已安裝,則將使用SQL Express。

如果您的數據庫沒有遵循由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" /> 
+0

是的,我正在使用實體框架。所以當我想發佈項目時,我不必添加連接字符串?但數據庫的名稱與當前數據庫的名稱不同。我想,如果我的上下文名稱是「Tedalscontext」,那麼數據庫的名稱也是'tedalscontext'。但在服務器中,我對數據庫有不同的名稱。我應該在服務器中使用相同的名稱創建一個數據庫,還是添加一個新的連接字符串? – Vini

+0

希望您沒有將LocalDB或SQLExpress用於生產應用程序,因此是的,您必須添加連接字符串。數據庫的名稱將是DbContext的完全限定名稱,所以如果您的DbContext被命名爲'TedalsContext'並駐留在'My.Namespace'命名空間中,那麼數據庫的名稱將是'My.Namespace.TedalsContext'。如果您希望Entity Framework使用特定的數據庫,只需添加一個名爲「DbContext」完全限定名的連接字符串,並將其指向您喜歡的位置。 – Albireo

+0

我相信你需要爲你的產品環境提供一個連接字符串。請按照此鏈接 - http://screencast.com/t/1VrM1m9wUQsu.It顯示一個例子。 – Vnuuk

相關問題