2013-03-15 130 views
2
<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 

是否與上述相關?我只是把它放在那裏,以免把事情搞得更深。 但低於是我很感興趣,這是我的本地SQL Server的連接字符串無法連接到SQL Server AppHarbor

<connectionStrings> 
    <add name="ApplicationServices" connectionString="Data Source=localhost;Initial Catalog=TestDB;User ID=lews;Password='therin'" providerName="System.Data.SqlClient" /> 

「當你創建Sequelizer你可以指定一個連接字符串別名的數據庫。這是在做Sequelizer附加頁面(按照應用程序概述中的「轉到...」鏈接)如果您在配置文件中將此名稱設置爲連接字符串的名稱,我們將自動使用您的Sequelizer連接字符串替換它當你的代碼被部署。「

這是來自Appharbor文檔的片段。所以我假設數據源,初始目錄,用戶ID和密碼被AppHarbor自動替換爲正確的值。但由於某種原因無法連接。

下面是我使用MySQL的這個時候另一個字符串,我再次認爲AppHarbor應該會自動注入正確的價值觀,但它給人的錯誤是:

「PeopleEntities不能在應用程序配置文件中找到」 這是怎麼回事?

<add name="PeopleEntities" connectionString="metadata=res://*/Context.People.csdl|res://*/Context.People.ssdl|res://*/Context.People.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=root;database=people&quot;" providerName="System.Data.EntityClient" /> 
     </connectionStrings> 

順便說一句,名稱分別爲 「PeopleEntities」 和 「ApplicationServices」 被用作AppHarbor別名。 而我不知道如何使用文檔中給出的代碼,數據庫只是不是我的東西..我如何使用本地和遠程連接字符串?在代碼中,我在哪裏構建字符串並注入它?當我創建一個DBContext實例時,我必須這樣做嗎?等..

任何想法將是偉大的,謝謝!

編輯: 順便說一句,如果我硬編碼的連接字符串,在App.config並使用wcftestclient,它的工作原理,它查詢數據庫..但是,這不是一個好主意,顯然連接字符串可以更改而不會有警告

無論如何,如果我硬編碼與琴絃部署,並連接到我的網站數據庫..它不會查詢SQL服務器..真的很困惑:(

回答

0

http://support.appharbor.com/discussions/problems/2687-solved-mysql-provider-with-entity-framework-problem 對於實體框架: 這件作品標記的是令人難以置信的重要:。

<system.data> 
      <DbProviderFactories> 
      <clear /> 
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" 
      description=".Net Framework Data Provider for MySQL" 
      type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, 
      Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
      </DbProviderFactories> 
     </system.data> 

哦確保MySQL的連接器組件是局部的,它應該是在你的web.config文件爲好,要格外肯定把它放在WCF的使用的App.config連接字符串中的相同插件別名

對於SQL Server插件: 需要使用此標記在web.config:

<system.web> 
    <compilation debug="true" targetFramework="4.5" /> 
    <httpRuntime targetFramework="4.5"/> 
    <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> 
    <profile> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
     </providers> 
    </profile> 
    <roleManager enabled="true"> 
     <providers> 
     <clear /> 
     <add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" /> 
     <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> 
     </providers> 
    </roleManager> 
    </system.web> 

,你應該是好去..