はじめに
Startup.cs を使うやり方はもうええんじゃ!!
本編
環境
- JetBrains Rider 2018 3 EAP 8
-
.NET Core SDK 2.2.100
-
macOS Mojave 10.14.2
-
SQLServer 2019 preview
DBはお手軽Dockerコンテナでやりました
プロジェクトの作成
-
.NET Core クラスライブラリでプロジェクトを作る
-
プロジェクに下記のライブラリをNuGetで追加する
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Design
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Tools.DotNet
-
合わせて project.json を追加し、下記のようにする。
{ "dependencies": { "Microsoft.EntityFrameworkCore": "2.2.0", "Microsoft.EntityFrameworkCore.Design": "2.2.0", "Microsoft.EntityFrameworkCore.SqlServer": "2.2.0" }, "tools": { "Microsoft.EntityFrameworkCore.Tools.DotNet": "2.0.3" }, "frameworks": { "netcoreapp2.2": { "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "2.2.0" } } } } } - テーブルにしたいクラスを定義する。
“`c#
public class UsersModel
{
[Key]
public int Id { get; set; }[MaxLength(1000)]
public string SurName { get; set; }[MaxLength(1000)]
public string MiddleName { get; set; }[MaxLength(1000)]
public string GivenName { get; set; }public bool IsAdministrator { get; set; }
[EmailAddress]
public string Email { get; set; }
}
“` -
DbContextを継承したクラスを追加する。
“`c#
public class BudgetDbContext : DbContext
{
public BudgetDbContext(DbContextOptions<BudgetDbContext> options) : base(options)
{
}public DbSet<UsersModel> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseSqlServer(@"Server=localhost;database=BudgetDev;User ID=[your uid];Password=[your password];Connection Timeout=30;");
}
}
“`例によってConnectionStringは外に出す対処をしましょう…
-
カレントディレクトリを.csprojと同じ場所に移動し、下記のコマンドを実行します。
dotnet ef migration add [お好きな名前] dotnet ef database upgrade
ConnectionStringで指定したデータベース名でデータベースが作成され、テーブルも無事展開されたでしょうか…