1.21 jigowatts

Great Scott!

Azure SQLデータベースに接続 アプリ編

概要

GWにリリースしたシステムのバグ修正や仕様調査とかの対応に追われる一週間でした!

ということで、前回の続きでアプリからAzure SQLデータベースに接続してみます。

環境

Visual Studio 2015

ADO.NETで接続

まずはこちらのサンプルのとおりにコンソールアプリから接続してみます。

static void Main(string[] args)
{
    using (var connection = new SqlConnection(
        "Server=tcp:voyagerprogram.database.windows.net,1433;Data Source=voyagerprogram.database.windows.net;Initial Catalog=voyager01;Persist Security Info=False;User ID={your_username};Password={your_password};Pooling=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
        ))
    {
        connection.Open();
        Console.WriteLine("Connected successfully.");

        Console.WriteLine("Press any key to finish...");
        Console.ReadKey(true);
    }
}


前回すでにクライアントIPを許可してあるのでローカルからデバッグ実行で接続できました。

Connected successfully.
Press any key to finish...


configファイルに書く場合もそのまま接続文字列のとこにコピペすればOKですね!

<connectionStrings>
    <add name="ConnectionString" connectionString="{接続文字列}" providerName="System.Data.SqlClient"/>
</connectionStrings>

Entity Frameworkで接続

次にASP.NET WebアプリケーションでEntity Framework(version 6.1.3)から接続してみます。
f:id:sh_yoshida:20160521195839p:plain

ウィザードに従ってデータベースファーストでモデルを作成します。
f:id:sh_yoshida:20160521195918p:plain

コントローラのIndexメソッドはこんな感じ。ライフタイム短いので簡単なMVCのWebアプリです。
Azure SQLデータベース上のAdventureWorksからProductのデータを10件抜いてきます。

public ActionResult Index()
{
    IEnumerable<Product> model;
    using (var context = new voyager01Entities())
    {
        model = context.Products.Take<Product>(10).ToList<Product>();
    }

    return View(model);
}

これもローカルからちゃんと接続できて表示されました。
f:id:sh_yoshida:20160521225913p:plain


Azure App Serviceから接続

Azureに公開しても大丈夫ですね。さっきと同じでわかりにくいですが、URLがazurewebsitesになってます!
f:id:sh_yoshida:20160521201607p:plain

ファイアウォールの設定でIPの設定が必要なのかと思ってましたが、[Azure サービスへのアクセスを許可]がオンになっていればWeb AppsからSQLデータベースに接続できるようです。
f:id:sh_yoshida:20160521233431p:plain

デフォルトでオンになってました。悩んで損した!


sh-yoshida.hatenablog.com
sh-yoshida.hatenablog.com