ASP .NET Core を使わずにクラスライブラリのプロジェクトでEF Core Code-Firstを行うやり方

はじめに

Startup.cs を使うやり方はもうええんじゃ!!

本編

環境

  • JetBrains Rider 2018 3 EAP 8

  • .NET Core SDK 2.2.100

  • macOS Mojave 10.14.2

  • SQLServer 2019 preview

    DBはお手軽Dockerコンテナでやりました

プロジェクトの作成

  1. .NET Core クラスライブラリでプロジェクトを作る

  2. プロジェクに下記のライブラリをNuGetで追加する

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Tools.DotNet
  1. 合わせて 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"
           }
         }
       }
     }
    }
    
  2. テーブルにしたいクラスを定義する。

    “`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; }
    }
    “`

  3. 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は外に出す対処をしましょう…

  4. カレントディレクトリを.csprojと同じ場所に移動し、下記のコマンドを実行します。

    dotnet ef migration add [お好きな名前]
    dotnet ef database upgrade
    

ConnectionStringで指定したデータベース名でデータベースが作成され、テーブルも無事展開されたでしょうか…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です