Asp.net.mvc5でlocal databaseからAzureのsql databaseにupdateする際のWeb.configの設定
Asp.net.mvc5でデータベースを作成して、(Tools⇒Nuget Manager Console⇒)Package Manager Consoleで”Update-Database”と入力すると、データベースが文字通りアップデートされます。
初期設定だとlocal databaseがアップデートされて良いのですが、ネット上に上げる際はazureからsql databaseを購入し、そのsql databaseにデータベースを乗り換える必要があります(Local databaseはネット上では使用できません)。
さて、そのsql databaseに乗り換える際なのですが、発行(publish)は無事に出来ているけども、Package Manager ConsoleでUpdate-Databaseを入力すると、local databaseの方がupdateされてしまうという場合についてのtipsです。
なお、私の環境はこんな感じです。
Visual Studio 2015 Community
Windows 7 Professional
初期設定ですとWeb.config内の<configure>内の<connectionStrings>は以下のようになっています。
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-WebApplication1-20160722.mdf;Initial Catalog=aspnet-WebApplication1-20160722;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
この設定から分かるとおり、LocalDBにしか接続していないですので、updateをしてもLocalDBがupdateされます。
この部分を以下のように変更します。
<connectionStrings>
<!-- <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-WebApplication1-20160722.mdf;Initial Catalog=aspnet-WebApplication1-20160722;Integrated Security=True" providerName="System.Data.SqlClient" /> -->
<add name="MyDatabasename" connectionString="Data Source=tcp:servername.database.windows.net;Initial Catalog=Database;User ID=yourname;Password=yourpassword" providerName="System.Data.SqlClient" />
</connectionStrings>
まず、add name=“ ”の所に購入したsqlのデータベース名をそのまま入れます。
次にconnectionString=“”ですが、これは購入したsql databaseをAzure portalで開けると「接続情報」という場所がありますので、そこをクリックするとconnectionString以下の情報が出てきます。それをそのままコピーして張り付ければOKです。なお、IDやPasswordのところについては記入されていない場合もありますので、その際はデータベースを発行(publish)する際に使用したご自身のユーザー名とパスワードをご利用下さい。
もしくは既に発行(publish)に成功しているのでしたら、発行する際の設定(setting)のデータベースを参照し、それをそのまま使用してもOKです。
最後にproviderName= “”以下ですが、 Sqldatabaseを使用しているのであれば、"System.Data.SqlClient"で良いと思います。
このようにweb.config内の設定を変えると、sql databaseにupdate出来るようになります。
上記の内容は言われてみれば最もなのですが、日本語の情報としてネットに落ちていなかったようなので一応上げておきます。
なお、asp.net.mvcに関しては下記の本が大変参考になります。ネットに上げる前の作業をほとんど全て網羅している優れものだと思っています。