【.NET Core, Azure SQL Server】ubuntuを使って.NET CoreでAzure Databaseを扱う
前回は.NET Coreをubuntuで動かすものを記事にしました。今回はubuntu上で.NET Coreを使ってAzure Databaseを動かせるかという検証です。ubuntuに.NET Coreを動かす場合は以下を参考にしてください。
tekitoumemo.hatenablog.com
僕の持ってるサブPCはポンコツでSQL Serverを入れたらパンクしちゃいます。メモリが3.25G以上が推奨ってもう無理じゃん。。
tekitoumemo.hatenablog.com
qiita.com
AzureDatabaseで動かして開発できたらポンコツPCでもなにかと使える!と思って検証しました。また、ubuntu上でAzure SQL Serverを動かすにはどんな作業が必要なのかの検証も含め、実施しました。結果
楽勝でした
はい。
Azure Databaseを作成します。
[SQLデータベース]をクリック→[SQLデータベースの作成]をクリック
必要な情報を入力します。
- データベース名
- サブスクリプション
- リソースグループ
- ソースの選択
これらは任意の情報を入力してください。
- サーバー
Azure SQL Serverはデータベースのサーバーを構築しなければいけないのでこちらの設定を行います。
こちらも任意の情報を入力してください。
- SQLエラスティックプール
こちらは大規模なDBでスケーリングするときの予算や規模の設定が出来ます。今回は検証なので「いいえ」にしておきます。
- 価格レベル
超知りたいところですね。SingleDatabaseだとBasic、Standard、Preniumの3つがあるので、今回はBasicにします。2G使えて、東日本リージョンで月額600円代です。Standardの250Gが使えるプランでも月額1800円程度なのでめっちゃ安いです。以下の計算ツールで計算出来ます。
azure.microsoft.com
これらの情報を入力したら作成します。ものの5分で作成出来ます。
.Net Coreの準備をします。
今回はEntity Framework Coreを使います。めっちゃ雑ですが、Githubにサンプルを載っけてるので参考になればと思います。
github.com
onConfigメソッドを作成します。
using Microsoft.EntityFrameworkCore; using System.Data.SqlClient; protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // 接続文字列を指定する var connectionString = ""; optionsBuilder.UseSqlServer(connectionString); }
Nugetから「Microsoft.EntityFrameworkCore」、「System.Data.SqlClient」をインストールして下さい。接続文字列はAzure Portalに記載されています。真っ赤にぬりつぶされたところに記載されています。
モデルとモデルをマッピングする処理を記載します。
public DbSet<Test> _test { get; set; } public class Test { public int Id { get; set; } public string Name { get; set; } public DateTime CreateTime { get; set; } public Nullable<DateTime> UpdateTime { get; set; } } protected override void OnModelCreating(ModelBuilder modelBuilder) { // テーブルにマッピングする modelBuilder.Entity<Test>().ToTable("Test"); }
modelBuilder.Entityにジェネリックでモデルを指定し、ToTableの引数にテーブル名を指定します。その他、モデルクラスとプロパティを設定します。
呼び出しの実装を行います。
using (var dbContext = new AppDbContext()) { var test = dbContext._test.ToList(); }
これで一通り完成です。
それではVSCodeでデバッグしてみます。
例外が発生しました。このIPアドレスは接続出来ないよ!ってエラーです。Azure Databaseではファイアウォールが設定されているので接続するIPを除外してあげなければいけません。
ファイアウォールの設定を行います。
[概要]→[サーバーファイアウォールの設定]をクリックします。
[クライアントIPの追加]を押下します。先ほどアクセスしたので、そのまま設定が出来ます。もちろん、手動で入力することも出来ます。
設定が完了したら再度、接続してみます。
ちゃんとデータが取れました!
これで、ubuntu上で.Net Coreの開発がまともにできるようになりました。やっとこれでリビングで寝っ転がりながら開発ができる!