2016-10-26 82 views
2

對於實體框架,我非常新,所以如果這個問題是基本的,我很抱歉。App.Config中的實體框架連接字符串

我正在通過Code First教科書工作,並創建了一個小型類庫(c#)和一個控制檯應用程序。該教科書指出,當我運行它時,實體框架將自動在SQL服務器中構建數據庫。它沒有,我相信的原因是因爲我有一個命名實例而不是默認實例\ SQLExpress。該教科書指出,在使用默認實例時,我不需要連接字符串,但由於我沒有使用默認實例,所以我猜測我需要在App.Config中使用connectionm字符串。我曾嘗試在此文件中放入標準連接字符串,但它不起作用。

這裏是我的App.Config中的全部內容文件

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 
    <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> 

可能有人請告知在連接字符串去,或者告訴我,如果我要對這個錯誤的方式。

UPDATE

感謝幫助迄今收到,我app.config文件現在看起來如下 -

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections>  
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <connectionStrings> 
    <add name="Model" connectionString="Server=OFFICE-ACER\SQLE;Database=BreakAway;Trusted_Connection=True;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 
    <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> 

然而,什麼也沒有發生,即沒有創建數據庫之前。

+0

您需要一個連接字符串。此外,配置中連接字符串的名稱是您在創建實例時傳遞給DBContext的內容。 – Darren

回答

3

在您<configSections>標籤,你可以把這個

<connectionStrings> 
    <add name="myConn" connectionString="theConnString" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

然後用你所需要的

而且雖然它可能無法幫助你在這種情況下替換值,以避免做手工在將來,EntityFramework NuGet包可以創造奇蹟,您只需輸入數據庫的url和登錄名 - 然後在您的配置文件中爲您創建整個連接字符串,創建您的edmx並允許您導入您選擇的數據

+0

這工作,但只有在我將「System.Data.EntityClient」更改爲「System.Data.SqlClient」後。在此之前,我收到一個錯誤「關鍵字不支持'服務器'」。感謝您的幫助 - 它讓我到了我需要的地方。 – PJW

+0

這是相當好的,抱歉沒有抓住那個 –

1

這應做到:

<?xml version="1.0"?> 
<configuration> 
    <connectionStrings> 
     <add name="putYourEntityName" connectionString="putYourConnectionStringHere" providerName="System.Data.EntityClient"/> 
    </connectionStrings> 
</configuration> 
+0

這聽起來真的很愚蠢;但實體名稱是什麼。這是我的上下文的名稱,數據庫的名稱,或類庫項目(或其他)的名稱? – PJW

+1

@PJW通常它和你的'DbContext'類的名字相同 – rbr94

1
<configuration> 
    <configSections> 
     ... 
    </configSections> 
    <connectionStrings> 
    <add name="Name" connectionString="Data Source=servername; Initial Catalog = yourDbName ; Intgrated Security ="According to your requirement" providerName="System.Data.SqlClient" /> 

    </connectionStrings> 

...

0

,你需要知道的第一件事。如果您正在使用類庫(.dll),在.dll中創建的實體(.edmx)文件,並且您正在從MVC應用程序(具有web.config)調用此方法。 App.config中的連接字符串永遠不會被使用。

因此,您可以將連接字符串映射到Web.Config(MVC項目)上,甚至可以從App.Config中刪除。它將始終使用web.config。

+0

沒有web.config文件 – PJW

+0

我沒有看到任何提示這是一個MVC應用程序。通常,您需要爲使用此模型的EDM定義連接字符串。這意味着,如果您在應用程序中使用包含EDM的DLL,則連接字符串需要放在應用程序的app-config中,而不是放在DLL的app-config中 – rbr94

相關問題