0

我正在向Azure API應用程序添加SQL數據庫。我有一個空的SQL數據庫,我通過portal.azure.com單獨創建。我的問題是我不知道如何設置連接字符串,以便我的應用程序使用Azure數據庫。具有實體框架的Azure Api/Web應用程序 - SQL數據庫連接字符串

我跟着Code First Migrations文章,但我堅持部署階段。我無法在項目中的任何文件中看到任何連接配置。

如何在Azure中部署應用程序時使用connectionString?


更多信息:

準確地說,我可以看到兩兩件事:

  1. 在Web.Debug /將release.config文件註釋掉的ConnectionStrings部分。
  2. Web.Config中一些EF配置:

    <entityFramework> 
         <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
          <parameters> 
          <parameter value="mssqllocaldb" /> 
          </parameters> 
         </defaultConnectionFactory> 
         (...) 
    

當我執行本地測試,我可以看到Database.Connection.ConnectionString

Data Source=(localdb)\mssqllocaldb;Initial Catalog=XDataAPI.Models.MyContext;Integrated Security=True;MultipleActiveResultSets=True 

BTW。發佈窗口指出在該項目中沒有找到數據庫。 (這並沒有真正困擾我,這是一個次要的問題)


編輯:

的DbContext,如要求:

public class MyAppContext : DbContext 
    { 
     public DbSet<Organisation> Organisations { get; set; } 
    } 
+0

請顯示您的DbContext類或至少DbContextClass構造函數的代碼。 –

+0

上下文是超級基本的,就像在沒有構造函數的教程中一樣。 – mayu

+0

我需要查看是否以及如何將連接名稱傳遞給基礎構造函數 - 如果執行不正確,可能會導致您的問題。 –

回答

0

如果您設置了SQL Server的虛擬機,然後

<add name="DataContext" connectionString="Data Source=VMname.cloudapp.net; Initial Catalog=catalog; User ID=login;Password=password; MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" /> 

如果您設置了SQL Azure,那麼設置爲that tutorial should be used

至於連接字符串的地方,請參閱一些documentation。你使用LocalDB,而不是你應該使用SQL Server。

+0

我正在使用SQL Azure。該教程只說從portal.azure.com複製連接字符串 - 我的問題是,我不知道該把它放在哪裏。 – mayu

+0

<參數值= 「這裏」/>

+0

更新我的答案。基本上,你現在使用LocalDB。將它更改爲SQL Server一個,你應該準備好去。 –

0

您應該可以在web.config中更新數據上下文的連接字符串以使用Azure SQL數據庫。對於我testproject它只是在web.config文件的頂部:

<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="WebApplication4Context" connectionString="Server=tcp:test.database.windows.net,1433;Database=testdb;User [email protected];Password=p4ssw0rd!;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
.... 
<configuration> 

不要忘了也更新Azure的SQL數據庫服務器的防火牆設置,使之成爲您的應用程序訪問。

編輯:您還可以通過在發佈對話添加您的Azure的SQL數據庫只改變您的Azure的環境中的數據庫連接: Azure Portal

Connection String

+0

謝謝,發佈窗口報告沒有在項目中找到數據庫:/ – mayu

+0

在發佈對話期間的此步驟添加Azure數據庫時,您必須在此處手動添加連接字符串。您必須從Azure門戶爲您的數據庫複製連接字符串並添加密碼。點擊三個點「...」後,您可以檢查您的連接。 –

+0

沒有地方放置連接字符串 - 這是問題。 – mayu

1

傳中,連接名稱爲參數去你的構造函數,然後在Web中設置連接字符串時使用相同的連接名稱。配置,如:

public class MyAppContext : DbContext 
{ 
    public MyAppContext():base("MyConnectionName"){} 
    public DbSet<Organisation> Organisations { get; set; } 
} 

,然後在web.config中:

<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="MyConnectionName" connectionString="Server=tcp:test.database.windows.net,1433;Database=testdb;User [email protected];Password=p4ssw0rd!;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
.... 
<configuration> 

如果你想從本機上運行,​​記住,你需要讓您的IP上的傳入連接您的Azure數據庫服務器防火牆。

0

對於.NET FW 4.5或以上:
1.你的DbContext類:

public class MyAppContext: DbContext 
{ 
    public MyAppContext() : base("YourConnectionStringKey") { } 

    public DbSet<Organization> Organizations{ get; set; } 
} 

2.你的web.config:

<connectionStrings> 
    <add name="YourConnectionStringKey" connectionString="DummyValue" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

3.在你的Web應用程序Azure的設置,添加連接字符串(它將在運行時自動注入到您的Web.config中) Azure WebApp Settings

如果喲我沒有使用.Net框架進行開發,請參閱https://azure.microsoft.com/en-us/blog/windows-azure-web-sites-how-application-strings-and-connection-strings-work/瞭解更多詳情。

0

如果連接字符串缺少web.config,那麼它使用的默認名稱是DefaultConnection,它指的是使用SQL或SQL Express安裝的localdb實例。

要配置它,您必須首先在Azure上創建一個SQL數據庫,然後從該Portal創建一個新數據庫併爲其命名,並確保它存在於相同的資源組和區域中以減少延遲並提高表現。

打開創建的數據庫,您會發現許多平臺的連接字符串,複製.Net的連接字符串並轉到Web應用程序設置,您應該找到連接字符串的位置,添加一個新的名稱並將其命名爲DefaultConnection並將值添加到剛剛從數據庫刀片複製的連接字符串中

當您第一次運行應用程序時,如果您指定在發佈嚮導期間添加代碼,則代碼將首先連接到數據庫並應用遷移,在web.config中也有一些配置。

相關問題