SlideShare a Scribd company logo
1 of 43
Entity Framework Coreを使ってみる
Core 1.1.0/SQLite編
2017/3/10 1Copyright (c) 2017 Eiwa System Management, Inc.
株式会社永和システムマネジメント
コンサルティングセンター
センター長 天野勝
http://www.esm.co.jp/service/consulting/
 作成アプリケーション
 KPTボード
 動作確認環境
 対象:Entity Framework Core 1.1.0
 OS:Windows10 64bit
 IDE:Visual Studio 2015 Community
 RDBMS:SQLite3
 EntityFramework Core SQLiteをインストールする際にインストールされる
 DB操作ツール:DB Browser for SQLite
2Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
概要
 以下のサイトを参考にさせていただきました。
 ありがとうございます。
 Logging | Microsoft Docs
https://docs.microsoft.com/en-us/ef/core/miscellaneous/logging
 Part 2. Entity Framework Core 1.0 の基本的な使い方 – とあるコン
サルタントのつぶやき
https://blogs.msdn.microsoft.com/nakama/2016/07/07/aspnetcore10-part2/
 Entity Framework Core 1.0 で SQLite を使ってみる - ROMANCE
DAWN for the new world
http://gooner.hateblo.jp/entry/2016/03/04/071400
3Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
謝辞
プロジェクトの作成
2017/3/10 4Copyright (c) 2017 Eiwa System Management, Inc.
 クラスライブラリ
 プロジェクト名「KptBoardSystem」
 「Microsoft.EntityframeworkCore.Sqlite」
「Microsoft.EntityframewordCore.Tools」をNuGetでインス
トール
5Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
Modelプロジェクトの作成
 クラスライブラリ
 プロジェクト名「KptBoardSystemTest」
 「Microsoft.EntityframeworkCore」「xunit」
「xunit.runner.visualstudio」「Moq」をNuGetでインストール
6Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストプロジェクトの作成
インストール
2017/3/10 7Copyright (c) 2017 Eiwa System Management, Inc.
 「Microsoft.EntityframeworkCore.Sqlite」をインストール
8Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
NuGetでインストール
 「Microsoft.EntityframeworkCore.Tools」をインストール
 インストールすると、マイグレーション機能が使えるようになる
9Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
NuGetでインストール
 インストール時にセキュリティエラーが出るのは、スクリプト
実行権限がないため。
 Visual Studioを管理者権限で実行して、再度インストールす
る。
10Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
NuGetでインストール
データモデルとテーブルの作成
2017/3/10 11Copyright (c) 2017 Eiwa System Management, Inc.
12Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
Userクラスの作成
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace KptBoardSystem
{
[Table("Users")] // テーブル名をクラス名の複数形に指定
public class User
{
public int UserId { get; set; }
[Required] // Nameフィールドは必須
public string Name { get; set; }
}
}
User.cs
13Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
KptBoardModelクラスの作成
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
namespace KptBoardSystem
{
public class KptBoardModel : DbContext
{
public DbSet<User> Users { get; internal set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connectionString =
new SqliteConnectionStringBuilder { DataSource = "../../../kpt.db" }.ToString();
optionsBuilder.UseSqlite(new SqliteConnection(connectionString));
}
}
}
KptBoardModel.cs
 パッケージマネージャコンソールにて、コマンドを実行する
 > Enable-Migrations
 マイグレーションができるようにする
 パスに日本語が含まれていたり、スタートアッププロジェクトに設定していないとエ
ラーになる
 > Add-Migration step00
 マイグレーション用のコード「XXX_step00.cs」が作成される
14Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
マイグレーションの準備
 パッケージマネージャコンソールにて、コマンドを実行する
 > Update-Database
 ソリューションの直下に「kpt.db」が作成される
15Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
マイグレーションの実施
 DB Browser for SQLiteにて「kpt.db」を開く
 「Users」テーブルが作成できていることを確認
16Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
データベースの確認
テストからのレコード作成
2017/3/10 17Copyright (c) 2017 Eiwa System Management, Inc.
 KptBoardSystemTestプロジェクトで[参照の追加]
 [プロジェクト]>[KptBoardSystem]をチェックして[OK]
18Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テスト対象の参照設定をする
19Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストコードの作成
using Xunit;
namespace KptBoardSystem.Test // Testの前に「.」を追加する
{
public class KptBoardModelTest
{
[Fact]
public void TestInsertUser()
{
using (var db = new KptBoardModel())
{
var user = new User
{
Name = "User01"
};
db.Add(user);
db.SaveChanges();
}
}
}
}
KptBoardModelTest.cs
 作成したテストを実行する
 DB Browser for SQLでレコードが挿入されているのを確認
する
20Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストの実施
データモデルの変更と
マイグレーション
2017/3/10 21Copyright (c) 2017 Eiwa System Management, Inc.
22Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
Userクラスの修正
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace KptBoardSystem
{
[Table("Users")]
public class User
{
public int UserId { get; set; }
[Required]
public string Name { get; set; }
public int? Age { get; set; } // プロパティを追加。nullも可能な「int?」型にする
}
}
User.cs
 パッケージマネージャコンソールにて、コマンドを実行する
 > Add-Migration step01
 マイグレーション用のコード「XXX_step01.cs」が作成される
23Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
マイグレーションの準備
 パッケージマネージャコンソールにて、コマンドを実行する
 > Update-Database
 「Users」テーブルに列が追加される
 「Age」列が追加されたのを確認する
24Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
マイグレーションの実行
25Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストコードの修正
using Xunit;
using System.Linq;
namespace KptBoardSystem.Test
{
public class KptBoardModelTest
{
[Fact]
public void TestInsertUser()
{
using (var db = new KptBoardModel())
{
// 全レコードを削除
foreach (var u in db.Users.ToArray())
{
db.Remove<User>(u);
}
db.Add(new User { Name = "User01" });
db.Add(new User { Name = "User02", Age = 2 });
db.SaveChanges();
}
}
}
}
KptBoardModelTest.cs
 修正したテストを実行する
 DB Browser for SQLでレコードが挿入されているのを確認
する
 レコードを削除しているので、UserIdが新しくなっている
26Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストの実施
関連テーブル
2017/3/10 27Copyright (c) 2017 Eiwa System Management, Inc.
28Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
クラス図
KptBoardModel
<<Table("Users")>>
+ <<get, set>> KptBoards : List<KptBoard>
+ AddKptBoard(kptBoard : int) : KptBoard
+ <<get, set>> UserId : int
+ <<get, set>> Age : int
+ <<get, set>> Name : string
User
<<Table("KptBoards")>>
+ <<get, set>> UserId : int
+ <<get, set>> KptBoardId : int
+ <<get, set>> Problem : string
+ <<get, set>> Try : string
+ <<get, set>> Keep : string
+ <<get, set>> Time : DateTime
KptBoard
- _kptBoards
0..*1
29Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
KptBoardクラスを追加
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace KptBoardSystem
{
[Table("KptBards")] // テーブル名をクラス名の複数形に指定
public class KptBoard
{
public int KptBoardId { get; set; }
[Required]
public DateTime Time { get; set; }
public string Keep { get; set; }
public string Problem { get; set; }
public string Try { get; set; }
public int UserId { get; set; } // 外部キーとして、UserクラスのUserIdと同じ名称を指定
}
}
KptBoard.cs
30Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
Userクラスを修正
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace KptBoardSystem
{
[Table("Users")]
public class User
{
private List<KptBoard> _kptBoards = new List<KptBoard>(); //KptBoardを複数持てるようにListを使用
public int UserId { get; set; }
[Required]
public string Name { get; set; }
public int? Age { get; set; }
public List<KptBoard> KptBoards
{
get { return _kptBoards; }
set { _kptBoards = value; }
}
public void AddKptBoard(KptBoard kptBoard)
{
_kptBoards.Add(kptBoard);
}
}
}
User.cs
31Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
KptBoardModelクラスを修正
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
namespace KptBoardSystem
{
public class KptBoardModel : DbContext
{
public DbSet<User> Users { get; internal set; }
public DbSet<KptBoard> KptBoards { get; internal set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connectionString =
new SqliteConnectionStringBuilder { DataSource = "../../../kpt.db" }.ToString();
optionsBuilder.UseSqlite(new SqliteConnection(connectionString));
}
}
}
KptBoardModel.cs
 パッケージマネージャコンソールにて、コマンドを実行する
 > Add-Migration step02
 マイグレーション用のコード「XXX_step02.cs」が作成される
32Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
マイグレーションの準備
 パッケージマネージャコンソールにて、コマンドを実行する
 > Update-Database
 「KptBoards」テーブルが追加される
33Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
マイグレーションの実行
34Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストメソッドを追加
using Xunit;
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace KptBoardSystem.Test
{
public class KptBoardModelTest
{
[Fact(DisplayName = "既存のユーザーにKptBoardを追加する")]
public void TestInsertKptBoard()
{
using (var db = new KptBoardModel())
{
var user02 = db.Users.Where((u) => u.Name == "User02").Include("KptBoards").First();
user02.AddKptBoard(new KptBoard
{
Time = DateTime.Now,
Keep = "続けること", Problem = "不満なこと", Try = "Tryは次に試すこと。"
});
db.Update(user02); // 更新
db.SaveChanges();
}
}
[Fact]
public void TestInsertUser()
KptBoardModelTest.cs
 追加したテストを単体で実行する
 DB Browser for SQLでレコードが挿入されているのを確認
する
35Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストの実施
36Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストメソッドを追加
using Xunit;
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace KptBoardSystem.Test
{
public class KptBoardModelTest
{
[Fact(DisplayName = "新規にユーザーとKptBoardを追加する")]
public void TestInsertUserAndKptBoard()
{
using (var db = new KptBoardModel())
{
var user = new User // Userが1つ、KptBoardが3つのインスタンスを作り上げる
{
Name = "User03", Age = 3,
KptBoards =
{
new KptBoard { Time = DateTime.Now, Keep = "続けることだけ" },
new KptBoard { Time = DateTime.Now, Problem = "続けることだけ" },
new KptBoard { Time = DateTime.Now, Try = "試すことだけ" },
}
};
db.Add(user); // 追加
db.SaveChanges();
}
}
KptBoardModelTest.cs
 追加したテストを単体で実行する
 DB Browser for SQLでレコードが挿入されているのを確認
する
37Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストの実施
38Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストメソッドを追加
using Xunit;
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace KptBoardSystem.Test
{
public class KptBoardModelTest
{
[Fact(DisplayName = "KptBoardを修正する")]
public void TestUpdateKptBoard()
{
using (var db = new KptBoardModel())
{
var kptBoard = db.KptBoards.Where(b => b.Problem.Contains("続ける")).First();
kptBoard.Problem = "問題だけ";
db.Update(kptBoard); // 更新
db.SaveChanges();
}
}
KptBoardModelTest.cs
 追加したテストを単体で実行する
 DB Browser for SQLでレコードが更新されているのを確認
する
39Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストの実施
40Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストメソッドを追加
using Xunit;
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace KptBoardModel.Test
{
public class KptBoardModelTest
{
[Fact(DisplayName = "KptBoardを削除する")]
public void TestDeleteKptBoard()
{
using (var db = new KptBoardModel())
{
var kptBoard = db.KptBoards.Where(b => b.Problem == "問題だけ").First();
db.Remove(kptBoard); // 削除
db.SaveChanges();
}
}
KptBoardModelTest.cs
 追加したテストを単体で実行する
 DB Browser for SQLでレコードが削除されているのを確認
する
41Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストの実施
42Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストメソッドを追加
using Xunit;
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace KptBoardModel.Test
{
public class KptBoardModelTest
{
[Fact(DisplayName = "KptBoardを持っているUserを削除する")]
public void TestDeleteUserHasKptBoard()
{
using (var db = new KptBoardModel())
{
// Includeしていないので、Userの情報しか取れない
var user = db.Users.Where((u) => u.Name == "User03").First();
db.Remove(user); // 削除
db.SaveChanges();
}
}
KptBoardModelTest.cs
 追加したテストを単体で実行する
 DB Browser for SQLでレコードが削除されているのを確認
する
 Userを消しただけだが、KptBoardも一緒に消える
43Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10
テストの実施

More Related Content

What's hot

Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Shin Ohno
 
Xamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみたXamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみたm ishizaki
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
 
フロントエンドで GraphQLを使った所感
フロントエンドで GraphQLを使った所感フロントエンドで GraphQLを使った所感
フロントエンドで GraphQLを使った所感Chao Li
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Shunsuke Maeda
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来増田 亨
 
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...Shotaro Suzuki
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Kenjiro Kubota
 
俺プロ PMBOK第7版
俺プロ PMBOK第7版俺プロ PMBOK第7版
俺プロ PMBOK第7版Ore Product
 
Eclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsEclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsHiroki Kondo
 
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてKeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてHiroyuki Wada
 
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)Hiroshi Tokumaru
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門増田 亨
 
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!泰史 栃折
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)Yoshitaka Kawashima
 
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理Tadashi Miyazato
 
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 日本マイクロソフト株式会社
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CDYuta Matsumura
 

What's hot (20)

Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
 
Xamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみたXamarin.Forms.WPF を試してみた
Xamarin.Forms.WPF を試してみた
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
 
フロントエンドで GraphQLを使った所感
フロントエンドで GraphQLを使った所感フロントエンドで GraphQLを使った所感
フロントエンドで GraphQLを使った所感
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
 
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
 
俺プロ PMBOK第7版
俺プロ PMBOK第7版俺プロ PMBOK第7版
俺プロ PMBOK第7版
 
Eclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsEclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtips
 
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてKeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについて
 
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
 
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
 
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
 
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
 
.NET Core時代のCI/CD
.NET Core時代のCI/CD.NET Core時代のCI/CD
.NET Core時代のCI/CD
 

Viewers also liked

KPTAふりかえり体験研修のご紹介
KPTAふりかえり体験研修のご紹介KPTAふりかえり体験研修のご紹介
KPTAふりかえり体験研修のご紹介ESM SEC
 
Community Open Day 2013 JP - EF CodeFirst DEMO
Community Open Day 2013 JP - EF CodeFirst DEMOCommunity Open Day 2013 JP - EF CodeFirst DEMO
Community Open Day 2013 JP - EF CodeFirst DEMOokumar savurou
 
チームファシリテーション体験研修のご紹介
チームファシリテーション体験研修のご紹介チームファシリテーション体験研修のご紹介
チームファシリテーション体験研修のご紹介ESM SEC
 
KPTふりかえり実践研修のご紹介
KPTふりかえり実践研修のご紹介KPTふりかえり実践研修のご紹介
KPTふりかえり実践研修のご紹介ESM SEC
 
KPTふりかえり会体験研修のご紹介
KPTふりかえり会体験研修のご紹介KPTふりかえり会体験研修のご紹介
KPTふりかえり会体験研修のご紹介ESM SEC
 
俺たちのKPTA
俺たちのKPTA俺たちのKPTA
俺たちのKPTAESM SEC
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたNarami Kiyokura
 
ESMのアジャイル開発
ESMのアジャイル開発ESMのアジャイル開発
ESMのアジャイル開発ESM SEC
 
コーディング不要! Entity Framework 6.1.3 + ASP.NET MVC 5 サンプル アプリケーション構築 手順書
コーディング不要!Entity Framework 6.1.3 + ASP.NET MVC 5 サンプル アプリケーション構築 手順書コーディング不要!Entity Framework 6.1.3 + ASP.NET MVC 5 サンプル アプリケーション構築 手順書
コーディング不要! Entity Framework 6.1.3 + ASP.NET MVC 5 サンプル アプリケーション構築 手順書Masaki Takeda
 
KPTの理論と実践 公開用 プロジェクトへの「ふりかえりカイゼン」の導入で学んだこと
KPTの理論と実践 公開用 プロジェクトへの「ふりかえりカイゼン」の導入で学んだことKPTの理論と実践 公開用 プロジェクトへの「ふりかえりカイゼン」の導入で学んだこと
KPTの理論と実践 公開用 プロジェクトへの「ふりかえりカイゼン」の導入で学んだことESM SEC
 
KPTの基本と、その活用法
KPTの基本と、その活用法KPTの基本と、その活用法
KPTの基本と、その活用法ESM SEC
 
キーワード駆動テストチュートリアルハンズアウト.03.06
キーワード駆動テストチュートリアルハンズアウト.03.06キーワード駆動テストチュートリアルハンズアウト.03.06
キーワード駆動テストチュートリアルハンズアウト.03.06Toru Koido
 
Fast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンFast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンMapR Technologies Japan
 
アジャイルってなにが美味しいの
アジャイルってなにが美味しいのアジャイルってなにが美味しいの
アジャイルってなにが美味しいのYasui Tsutomu
 
Geldsystem, ESM (Europäischer Stabilitätsmechanismus), Eurobonds
Geldsystem, ESM (Europäischer Stabilitätsmechanismus), EurobondsGeldsystem, ESM (Europäischer Stabilitätsmechanismus), Eurobonds
Geldsystem, ESM (Europäischer Stabilitätsmechanismus), EurobondsFlorian Hörantner
 
今風なデスクトップアプリのモダンインストーラー開発
今風なデスクトップアプリのモダンインストーラー開発今風なデスクトップアプリのモダンインストーラー開発
今風なデスクトップアプリのモダンインストーラー開発Kaoru Nakajima
 
Tangible Bug Tracking Using LEGO Bricks in Agile2008, Toronto
Tangible Bug Tracking Using LEGO Bricks in Agile2008, TorontoTangible Bug Tracking Using LEGO Bricks in Agile2008, Toronto
Tangible Bug Tracking Using LEGO Bricks in Agile2008, TorontoTakeshi Kakeda
 
JaSST 20080130 バグレゴ
JaSST 20080130 バグレゴJaSST 20080130 バグレゴ
JaSST 20080130 バグレゴTakeshi Kakeda
 
T90 きっと怖くないmvvm & mvpvm
T90 きっと怖くないmvvm & mvpvmT90 きっと怖くないmvvm & mvpvm
T90 きっと怖くないmvvm & mvpvm伸男 伊藤
 

Viewers also liked (20)

KPTAふりかえり体験研修のご紹介
KPTAふりかえり体験研修のご紹介KPTAふりかえり体験研修のご紹介
KPTAふりかえり体験研修のご紹介
 
Community Open Day 2013 JP - EF CodeFirst DEMO
Community Open Day 2013 JP - EF CodeFirst DEMOCommunity Open Day 2013 JP - EF CodeFirst DEMO
Community Open Day 2013 JP - EF CodeFirst DEMO
 
チームファシリテーション体験研修のご紹介
チームファシリテーション体験研修のご紹介チームファシリテーション体験研修のご紹介
チームファシリテーション体験研修のご紹介
 
KPTふりかえり実践研修のご紹介
KPTふりかえり実践研修のご紹介KPTふりかえり実践研修のご紹介
KPTふりかえり実践研修のご紹介
 
KPTふりかえり会体験研修のご紹介
KPTふりかえり会体験研修のご紹介KPTふりかえり会体験研修のご紹介
KPTふりかえり会体験研修のご紹介
 
俺たちのKPTA
俺たちのKPTA俺たちのKPTA
俺たちのKPTA
 
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみたADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
 
ESMのアジャイル開発
ESMのアジャイル開発ESMのアジャイル開発
ESMのアジャイル開発
 
コーディング不要! Entity Framework 6.1.3 + ASP.NET MVC 5 サンプル アプリケーション構築 手順書
コーディング不要!Entity Framework 6.1.3 + ASP.NET MVC 5 サンプル アプリケーション構築 手順書コーディング不要!Entity Framework 6.1.3 + ASP.NET MVC 5 サンプル アプリケーション構築 手順書
コーディング不要! Entity Framework 6.1.3 + ASP.NET MVC 5 サンプル アプリケーション構築 手順書
 
KPTの理論と実践 公開用 プロジェクトへの「ふりかえりカイゼン」の導入で学んだこと
KPTの理論と実践 公開用 プロジェクトへの「ふりかえりカイゼン」の導入で学んだことKPTの理論と実践 公開用 プロジェクトへの「ふりかえりカイゼン」の導入で学んだこと
KPTの理論と実践 公開用 プロジェクトへの「ふりかえりカイゼン」の導入で学んだこと
 
KPTの基本と、その活用法
KPTの基本と、その活用法KPTの基本と、その活用法
KPTの基本と、その活用法
 
キーワード駆動テストチュートリアルハンズアウト.03.06
キーワード駆動テストチュートリアルハンズアウト.03.06キーワード駆動テストチュートリアルハンズアウト.03.06
キーワード駆動テストチュートリアルハンズアウト.03.06
 
Fast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンFast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターン
 
アジャイルってなにが美味しいの
アジャイルってなにが美味しいのアジャイルってなにが美味しいの
アジャイルってなにが美味しいの
 
Esm slideshare ppt
Esm slideshare pptEsm slideshare ppt
Esm slideshare ppt
 
Geldsystem, ESM (Europäischer Stabilitätsmechanismus), Eurobonds
Geldsystem, ESM (Europäischer Stabilitätsmechanismus), EurobondsGeldsystem, ESM (Europäischer Stabilitätsmechanismus), Eurobonds
Geldsystem, ESM (Europäischer Stabilitätsmechanismus), Eurobonds
 
今風なデスクトップアプリのモダンインストーラー開発
今風なデスクトップアプリのモダンインストーラー開発今風なデスクトップアプリのモダンインストーラー開発
今風なデスクトップアプリのモダンインストーラー開発
 
Tangible Bug Tracking Using LEGO Bricks in Agile2008, Toronto
Tangible Bug Tracking Using LEGO Bricks in Agile2008, TorontoTangible Bug Tracking Using LEGO Bricks in Agile2008, Toronto
Tangible Bug Tracking Using LEGO Bricks in Agile2008, Toronto
 
JaSST 20080130 バグレゴ
JaSST 20080130 バグレゴJaSST 20080130 バグレゴ
JaSST 20080130 バグレゴ
 
T90 きっと怖くないmvvm & mvpvm
T90 きっと怖くないmvvm & mvpvmT90 きっと怖くないmvvm & mvpvm
T90 きっと怖くないmvvm & mvpvm
 

Similar to 「Entity Framework Coreを使ってみる」 公開用

Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...Shotaro Suzuki
 
[2001/01/23] VSLive! / Visual C++.NET 新機能概要
[2001/01/23] VSLive! / Visual C++.NET 新機能概要[2001/01/23] VSLive! / Visual C++.NET 新機能概要
[2001/01/23] VSLive! / Visual C++.NET 新機能概要Tatsuhiko Tanaka
 
Microsoft Tunnel 概要
Microsoft Tunnel 概要Microsoft Tunnel 概要
Microsoft Tunnel 概要Yutaro Tamai
 
Entity Framework 6.1.3 + Windows フォーム サンプル アプリケーション構築 手順書
Entity Framework 6.1.3 + Windows フォームサンプル アプリケーション構築手順書Entity Framework 6.1.3 + Windows フォームサンプル アプリケーション構築手順書
Entity Framework 6.1.3 + Windows フォーム サンプル アプリケーション構築 手順書Masaki Takeda
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーションYuta Matsumura
 
New Features in C# 10/11
New Features in C# 10/11New Features in C# 10/11
New Features in C# 10/11Akira Inoue
 
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...NTT DATA Technology & Innovation
 
Azure IoT Edge で Custom Vision
Azure IoT Edge で Custom VisionAzure IoT Edge で Custom Vision
Azure IoT Edge で Custom VisionYoshitaka Seo
 
1000人規模で使う分析基盤構築 〜redshiftを活用したeuc
1000人規模で使う分析基盤構築  〜redshiftを活用したeuc1000人規模で使う分析基盤構築  〜redshiftを活用したeuc
1000人規模で使う分析基盤構築 〜redshiftを活用したeucKazuhiro Miyajima
 
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みモバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みMorioImai
 
Tech Ed 2010 Japan T1-310 Microsoft Online Services 展開時の実践テクニック
Tech Ed 2010 Japan T1-310 Microsoft Online Services 展開時の実践テクニックTech Ed 2010 Japan T1-310 Microsoft Online Services 展開時の実践テクニック
Tech Ed 2010 Japan T1-310 Microsoft Online Services 展開時の実践テクニックkumo2010
 
Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101wind06106
 
C# Database操作3 データの更新-
C# Database操作3  データの更新-C# Database操作3  データの更新-
C# Database操作3 データの更新-Hiroki Takahashi
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01Yusuke Ando
 
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ 【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ 日本マイクロソフト株式会社
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理junichi anno
 
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...Masaki Takeda
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Masayuki Ozawa
 
Microsoft Endpoint Manager Tenant Attach のご紹介
Microsoft Endpoint Manager Tenant Attach のご紹介Microsoft Endpoint Manager Tenant Attach のご紹介
Microsoft Endpoint Manager Tenant Attach のご紹介Yutaro Tamai
 
C# Database操作6 SqlDataAdapterを使用したデータの更新-
C# Database操作6  SqlDataAdapterを使用したデータの更新-C# Database操作6  SqlDataAdapterを使用したデータの更新-
C# Database操作6 SqlDataAdapterを使用したデータの更新-Hiroki Takahashi
 

Similar to 「Entity Framework Coreを使ってみる」 公開用 (20)

Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
 
[2001/01/23] VSLive! / Visual C++.NET 新機能概要
[2001/01/23] VSLive! / Visual C++.NET 新機能概要[2001/01/23] VSLive! / Visual C++.NET 新機能概要
[2001/01/23] VSLive! / Visual C++.NET 新機能概要
 
Microsoft Tunnel 概要
Microsoft Tunnel 概要Microsoft Tunnel 概要
Microsoft Tunnel 概要
 
Entity Framework 6.1.3 + Windows フォーム サンプル アプリケーション構築 手順書
Entity Framework 6.1.3 + Windows フォームサンプル アプリケーション構築手順書Entity Framework 6.1.3 + Windows フォームサンプル アプリケーション構築手順書
Entity Framework 6.1.3 + Windows フォーム サンプル アプリケーション構築 手順書
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
New Features in C# 10/11
New Features in C# 10/11New Features in C# 10/11
New Features in C# 10/11
 
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
JCBの Payment as a Service 実現にむけたゼロベースの組織変革とテクニカル・イネーブラー(NTTデータ テクノロジーカンファレンス ...
 
Azure IoT Edge で Custom Vision
Azure IoT Edge で Custom VisionAzure IoT Edge で Custom Vision
Azure IoT Edge で Custom Vision
 
1000人規模で使う分析基盤構築 〜redshiftを活用したeuc
1000人規模で使う分析基盤構築  〜redshiftを活用したeuc1000人規模で使う分析基盤構築  〜redshiftを活用したeuc
1000人規模で使う分析基盤構築 〜redshiftを活用したeuc
 
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組みモバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
 
Tech Ed 2010 Japan T1-310 Microsoft Online Services 展開時の実践テクニック
Tech Ed 2010 Japan T1-310 Microsoft Online Services 展開時の実践テクニックTech Ed 2010 Japan T1-310 Microsoft Online Services 展開時の実践テクニック
Tech Ed 2010 Japan T1-310 Microsoft Online Services 展開時の実践テクニック
 
Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101Interact 2018:PowerShell of Microsoft SDN v2 101
Interact 2018:PowerShell of Microsoft SDN v2 101
 
C# Database操作3 データの更新-
C# Database操作3  データの更新-C# Database操作3  データの更新-
C# Database操作3 データの更新-
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ 【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
Test Manager + Team Foundation Server /Visual Studio Team Services 手順書(共有パラメー...
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
 
Microsoft Endpoint Manager Tenant Attach のご紹介
Microsoft Endpoint Manager Tenant Attach のご紹介Microsoft Endpoint Manager Tenant Attach のご紹介
Microsoft Endpoint Manager Tenant Attach のご紹介
 
C# Database操作6 SqlDataAdapterを使用したデータの更新-
C# Database操作6  SqlDataAdapterを使用したデータの更新-C# Database操作6  SqlDataAdapterを使用したデータの更新-
C# Database操作6 SqlDataAdapterを使用したデータの更新-
 

More from ESM SEC

「ふりかえり」は、Retrospectiveか、Reflectionか
「ふりかえり」は、Retrospectiveか、Reflectionか「ふりかえり」は、Retrospectiveか、Reflectionか
「ふりかえり」は、Retrospectiveか、ReflectionかESM SEC
 
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用ESM SEC
 
製品の質と、仕事の質を向上させるふりかえりの活用
製品の質と、仕事の質を向上させるふりかえりの活用製品の質と、仕事の質を向上させるふりかえりの活用
製品の質と、仕事の質を向上させるふりかえりの活用ESM SEC
 
ふりかえり支援ツールを用いたリモートふりかえり会のファシリテーション方法の提案
ふりかえり支援ツールを用いたリモートふりかえり会のファシリテーション方法の提案ふりかえり支援ツールを用いたリモートふりかえり会のファシリテーション方法の提案
ふりかえり支援ツールを用いたリモートふりかえり会のファシリテーション方法の提案ESM SEC
 
ふりかえり会は懺悔の場でも責任追及の場でもありません、過去の学びを活かして幸福な未来を作る行動を生み出す場です
ふりかえり会は懺悔の場でも責任追及の場でもありません、過去の学びを活かして幸福な未来を作る行動を生み出す場ですふりかえり会は懺悔の場でも責任追及の場でもありません、過去の学びを活かして幸福な未来を作る行動を生み出す場です
ふりかえり会は懺悔の場でも責任追及の場でもありません、過去の学びを活かして幸福な未来を作る行動を生み出す場ですESM SEC
 
KPTとKPTA
KPTとKPTAKPTとKPTA
KPTとKPTAESM SEC
 
けぷ人とけぷ太
けぷ人とけぷ太けぷ人とけぷ太
けぷ人とけぷ太ESM SEC
 
「システムメタファ」再考 公開用
「システムメタファ」再考 公開用「システムメタファ」再考 公開用
「システムメタファ」再考 公開用ESM SEC
 
アジャイル開発の事例と動向 公開用
アジャイル開発の事例と動向 公開用アジャイル開発の事例と動向 公開用
アジャイル開発の事例と動向 公開用ESM SEC
 
「失敗事例から学ぶアジャイル開発」研修の紹介
「失敗事例から学ぶアジャイル開発」研修の紹介「失敗事例から学ぶアジャイル開発」研修の紹介
「失敗事例から学ぶアジャイル開発」研修の紹介ESM SEC
 
ゼロから始めるプロダクト開発
ゼロから始めるプロダクト開発ゼロから始めるプロダクト開発
ゼロから始めるプロダクト開発ESM SEC
 
アジャイル開発をよりアジャイルに
アジャイル開発をよりアジャイルにアジャイル開発をよりアジャイルに
アジャイル開発をよりアジャイルにESM SEC
 
ふりかえりで学んだこと ベスト10
ふりかえりで学んだこと ベスト10ふりかえりで学んだこと ベスト10
ふりかえりで学んだこと ベスト10ESM SEC
 
「アジャイルコーチの7つ道具」の使い方
「アジャイルコーチの7つ道具」の使い方「アジャイルコーチの7つ道具」の使い方
「アジャイルコーチの7つ道具」の使い方ESM SEC
 
ワークショップ 明日からはじめるアジャイル
ワークショップ 明日からはじめるアジャイルワークショップ 明日からはじめるアジャイル
ワークショップ 明日からはじめるアジャイルESM SEC
 
アジャイル開発の基礎知識 抜粋版
アジャイル開発の基礎知識 抜粋版アジャイル開発の基礎知識 抜粋版
アジャイル開発の基礎知識 抜粋版ESM SEC
 
Pull Request & TDD 入門
Pull Request & TDD 入門Pull Request & TDD 入門
Pull Request & TDD 入門ESM SEC
 
うそのアジャイル、まことのアジャイル 公開用
うそのアジャイル、まことのアジャイル 公開用うそのアジャイル、まことのアジャイル 公開用
うそのアジャイル、まことのアジャイル 公開用ESM SEC
 
KPTのコツを掴め!! 公開用
KPTのコツを掴め!! 公開用KPTのコツを掴め!! 公開用
KPTのコツを掴め!! 公開用ESM SEC
 
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~ESM SEC
 

More from ESM SEC (20)

「ふりかえり」は、Retrospectiveか、Reflectionか
「ふりかえり」は、Retrospectiveか、Reflectionか「ふりかえり」は、Retrospectiveか、Reflectionか
「ふりかえり」は、Retrospectiveか、Reflectionか
 
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
日本におけるアジャイル開発の認知度の変遷を情報処理技術者試験の問題から考察してみた_公開用
 
製品の質と、仕事の質を向上させるふりかえりの活用
製品の質と、仕事の質を向上させるふりかえりの活用製品の質と、仕事の質を向上させるふりかえりの活用
製品の質と、仕事の質を向上させるふりかえりの活用
 
ふりかえり支援ツールを用いたリモートふりかえり会のファシリテーション方法の提案
ふりかえり支援ツールを用いたリモートふりかえり会のファシリテーション方法の提案ふりかえり支援ツールを用いたリモートふりかえり会のファシリテーション方法の提案
ふりかえり支援ツールを用いたリモートふりかえり会のファシリテーション方法の提案
 
ふりかえり会は懺悔の場でも責任追及の場でもありません、過去の学びを活かして幸福な未来を作る行動を生み出す場です
ふりかえり会は懺悔の場でも責任追及の場でもありません、過去の学びを活かして幸福な未来を作る行動を生み出す場ですふりかえり会は懺悔の場でも責任追及の場でもありません、過去の学びを活かして幸福な未来を作る行動を生み出す場です
ふりかえり会は懺悔の場でも責任追及の場でもありません、過去の学びを活かして幸福な未来を作る行動を生み出す場です
 
KPTとKPTA
KPTとKPTAKPTとKPTA
KPTとKPTA
 
けぷ人とけぷ太
けぷ人とけぷ太けぷ人とけぷ太
けぷ人とけぷ太
 
「システムメタファ」再考 公開用
「システムメタファ」再考 公開用「システムメタファ」再考 公開用
「システムメタファ」再考 公開用
 
アジャイル開発の事例と動向 公開用
アジャイル開発の事例と動向 公開用アジャイル開発の事例と動向 公開用
アジャイル開発の事例と動向 公開用
 
「失敗事例から学ぶアジャイル開発」研修の紹介
「失敗事例から学ぶアジャイル開発」研修の紹介「失敗事例から学ぶアジャイル開発」研修の紹介
「失敗事例から学ぶアジャイル開発」研修の紹介
 
ゼロから始めるプロダクト開発
ゼロから始めるプロダクト開発ゼロから始めるプロダクト開発
ゼロから始めるプロダクト開発
 
アジャイル開発をよりアジャイルに
アジャイル開発をよりアジャイルにアジャイル開発をよりアジャイルに
アジャイル開発をよりアジャイルに
 
ふりかえりで学んだこと ベスト10
ふりかえりで学んだこと ベスト10ふりかえりで学んだこと ベスト10
ふりかえりで学んだこと ベスト10
 
「アジャイルコーチの7つ道具」の使い方
「アジャイルコーチの7つ道具」の使い方「アジャイルコーチの7つ道具」の使い方
「アジャイルコーチの7つ道具」の使い方
 
ワークショップ 明日からはじめるアジャイル
ワークショップ 明日からはじめるアジャイルワークショップ 明日からはじめるアジャイル
ワークショップ 明日からはじめるアジャイル
 
アジャイル開発の基礎知識 抜粋版
アジャイル開発の基礎知識 抜粋版アジャイル開発の基礎知識 抜粋版
アジャイル開発の基礎知識 抜粋版
 
Pull Request & TDD 入門
Pull Request & TDD 入門Pull Request & TDD 入門
Pull Request & TDD 入門
 
うそのアジャイル、まことのアジャイル 公開用
うそのアジャイル、まことのアジャイル 公開用うそのアジャイル、まことのアジャイル 公開用
うそのアジャイル、まことのアジャイル 公開用
 
KPTのコツを掴め!! 公開用
KPTのコツを掴め!! 公開用KPTのコツを掴め!! 公開用
KPTのコツを掴め!! 公開用
 
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~
「カイゼンできてますか? ~KPTAでわかる!行動カイゼン~
 

「Entity Framework Coreを使ってみる」 公開用

  • 1. Entity Framework Coreを使ってみる Core 1.1.0/SQLite編 2017/3/10 1Copyright (c) 2017 Eiwa System Management, Inc. 株式会社永和システムマネジメント コンサルティングセンター センター長 天野勝 http://www.esm.co.jp/service/consulting/
  • 2.  作成アプリケーション  KPTボード  動作確認環境  対象:Entity Framework Core 1.1.0  OS:Windows10 64bit  IDE:Visual Studio 2015 Community  RDBMS:SQLite3  EntityFramework Core SQLiteをインストールする際にインストールされる  DB操作ツール:DB Browser for SQLite 2Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 概要
  • 3.  以下のサイトを参考にさせていただきました。  ありがとうございます。  Logging | Microsoft Docs https://docs.microsoft.com/en-us/ef/core/miscellaneous/logging  Part 2. Entity Framework Core 1.0 の基本的な使い方 – とあるコン サルタントのつぶやき https://blogs.msdn.microsoft.com/nakama/2016/07/07/aspnetcore10-part2/  Entity Framework Core 1.0 で SQLite を使ってみる - ROMANCE DAWN for the new world http://gooner.hateblo.jp/entry/2016/03/04/071400 3Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 謝辞
  • 4. プロジェクトの作成 2017/3/10 4Copyright (c) 2017 Eiwa System Management, Inc.
  • 5.  クラスライブラリ  プロジェクト名「KptBoardSystem」  「Microsoft.EntityframeworkCore.Sqlite」 「Microsoft.EntityframewordCore.Tools」をNuGetでインス トール 5Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 Modelプロジェクトの作成
  • 6.  クラスライブラリ  プロジェクト名「KptBoardSystemTest」  「Microsoft.EntityframeworkCore」「xunit」 「xunit.runner.visualstudio」「Moq」をNuGetでインストール 6Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストプロジェクトの作成
  • 7. インストール 2017/3/10 7Copyright (c) 2017 Eiwa System Management, Inc.
  • 8.  「Microsoft.EntityframeworkCore.Sqlite」をインストール 8Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 NuGetでインストール
  • 10.  インストール時にセキュリティエラーが出るのは、スクリプト 実行権限がないため。  Visual Studioを管理者権限で実行して、再度インストールす る。 10Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 NuGetでインストール
  • 12. 12Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 Userクラスの作成 using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace KptBoardSystem { [Table("Users")] // テーブル名をクラス名の複数形に指定 public class User { public int UserId { get; set; } [Required] // Nameフィールドは必須 public string Name { get; set; } } } User.cs
  • 13. 13Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 KptBoardModelクラスの作成 using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; namespace KptBoardSystem { public class KptBoardModel : DbContext { public DbSet<User> Users { get; internal set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { var connectionString = new SqliteConnectionStringBuilder { DataSource = "../../../kpt.db" }.ToString(); optionsBuilder.UseSqlite(new SqliteConnection(connectionString)); } } } KptBoardModel.cs
  • 14.  パッケージマネージャコンソールにて、コマンドを実行する  > Enable-Migrations  マイグレーションができるようにする  パスに日本語が含まれていたり、スタートアッププロジェクトに設定していないとエ ラーになる  > Add-Migration step00  マイグレーション用のコード「XXX_step00.cs」が作成される 14Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 マイグレーションの準備
  • 15.  パッケージマネージャコンソールにて、コマンドを実行する  > Update-Database  ソリューションの直下に「kpt.db」が作成される 15Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 マイグレーションの実施
  • 16.  DB Browser for SQLiteにて「kpt.db」を開く  「Users」テーブルが作成できていることを確認 16Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 データベースの確認
  • 19. 19Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストコードの作成 using Xunit; namespace KptBoardSystem.Test // Testの前に「.」を追加する { public class KptBoardModelTest { [Fact] public void TestInsertUser() { using (var db = new KptBoardModel()) { var user = new User { Name = "User01" }; db.Add(user); db.SaveChanges(); } } } } KptBoardModelTest.cs
  • 20.  作成したテストを実行する  DB Browser for SQLでレコードが挿入されているのを確認 する 20Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストの実施
  • 22. 22Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 Userクラスの修正 using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace KptBoardSystem { [Table("Users")] public class User { public int UserId { get; set; } [Required] public string Name { get; set; } public int? Age { get; set; } // プロパティを追加。nullも可能な「int?」型にする } } User.cs
  • 23.  パッケージマネージャコンソールにて、コマンドを実行する  > Add-Migration step01  マイグレーション用のコード「XXX_step01.cs」が作成される 23Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 マイグレーションの準備
  • 24.  パッケージマネージャコンソールにて、コマンドを実行する  > Update-Database  「Users」テーブルに列が追加される  「Age」列が追加されたのを確認する 24Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 マイグレーションの実行
  • 25. 25Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストコードの修正 using Xunit; using System.Linq; namespace KptBoardSystem.Test { public class KptBoardModelTest { [Fact] public void TestInsertUser() { using (var db = new KptBoardModel()) { // 全レコードを削除 foreach (var u in db.Users.ToArray()) { db.Remove<User>(u); } db.Add(new User { Name = "User01" }); db.Add(new User { Name = "User02", Age = 2 }); db.SaveChanges(); } } } } KptBoardModelTest.cs
  • 26.  修正したテストを実行する  DB Browser for SQLでレコードが挿入されているのを確認 する  レコードを削除しているので、UserIdが新しくなっている 26Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストの実施
  • 27. 関連テーブル 2017/3/10 27Copyright (c) 2017 Eiwa System Management, Inc.
  • 28. 28Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 クラス図 KptBoardModel <<Table("Users")>> + <<get, set>> KptBoards : List<KptBoard> + AddKptBoard(kptBoard : int) : KptBoard + <<get, set>> UserId : int + <<get, set>> Age : int + <<get, set>> Name : string User <<Table("KptBoards")>> + <<get, set>> UserId : int + <<get, set>> KptBoardId : int + <<get, set>> Problem : string + <<get, set>> Try : string + <<get, set>> Keep : string + <<get, set>> Time : DateTime KptBoard - _kptBoards 0..*1
  • 29. 29Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 KptBoardクラスを追加 using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace KptBoardSystem { [Table("KptBards")] // テーブル名をクラス名の複数形に指定 public class KptBoard { public int KptBoardId { get; set; } [Required] public DateTime Time { get; set; } public string Keep { get; set; } public string Problem { get; set; } public string Try { get; set; } public int UserId { get; set; } // 外部キーとして、UserクラスのUserIdと同じ名称を指定 } } KptBoard.cs
  • 30. 30Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 Userクラスを修正 using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace KptBoardSystem { [Table("Users")] public class User { private List<KptBoard> _kptBoards = new List<KptBoard>(); //KptBoardを複数持てるようにListを使用 public int UserId { get; set; } [Required] public string Name { get; set; } public int? Age { get; set; } public List<KptBoard> KptBoards { get { return _kptBoards; } set { _kptBoards = value; } } public void AddKptBoard(KptBoard kptBoard) { _kptBoards.Add(kptBoard); } } } User.cs
  • 31. 31Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 KptBoardModelクラスを修正 using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; namespace KptBoardSystem { public class KptBoardModel : DbContext { public DbSet<User> Users { get; internal set; } public DbSet<KptBoard> KptBoards { get; internal set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { var connectionString = new SqliteConnectionStringBuilder { DataSource = "../../../kpt.db" }.ToString(); optionsBuilder.UseSqlite(new SqliteConnection(connectionString)); } } } KptBoardModel.cs
  • 32.  パッケージマネージャコンソールにて、コマンドを実行する  > Add-Migration step02  マイグレーション用のコード「XXX_step02.cs」が作成される 32Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 マイグレーションの準備
  • 33.  パッケージマネージャコンソールにて、コマンドを実行する  > Update-Database  「KptBoards」テーブルが追加される 33Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 マイグレーションの実行
  • 34. 34Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストメソッドを追加 using Xunit; using System; using System.Linq; using Microsoft.EntityFrameworkCore; namespace KptBoardSystem.Test { public class KptBoardModelTest { [Fact(DisplayName = "既存のユーザーにKptBoardを追加する")] public void TestInsertKptBoard() { using (var db = new KptBoardModel()) { var user02 = db.Users.Where((u) => u.Name == "User02").Include("KptBoards").First(); user02.AddKptBoard(new KptBoard { Time = DateTime.Now, Keep = "続けること", Problem = "不満なこと", Try = "Tryは次に試すこと。" }); db.Update(user02); // 更新 db.SaveChanges(); } } [Fact] public void TestInsertUser() KptBoardModelTest.cs
  • 35.  追加したテストを単体で実行する  DB Browser for SQLでレコードが挿入されているのを確認 する 35Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストの実施
  • 36. 36Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストメソッドを追加 using Xunit; using System; using System.Linq; using Microsoft.EntityFrameworkCore; namespace KptBoardSystem.Test { public class KptBoardModelTest { [Fact(DisplayName = "新規にユーザーとKptBoardを追加する")] public void TestInsertUserAndKptBoard() { using (var db = new KptBoardModel()) { var user = new User // Userが1つ、KptBoardが3つのインスタンスを作り上げる { Name = "User03", Age = 3, KptBoards = { new KptBoard { Time = DateTime.Now, Keep = "続けることだけ" }, new KptBoard { Time = DateTime.Now, Problem = "続けることだけ" }, new KptBoard { Time = DateTime.Now, Try = "試すことだけ" }, } }; db.Add(user); // 追加 db.SaveChanges(); } } KptBoardModelTest.cs
  • 37.  追加したテストを単体で実行する  DB Browser for SQLでレコードが挿入されているのを確認 する 37Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストの実施
  • 38. 38Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストメソッドを追加 using Xunit; using System; using System.Linq; using Microsoft.EntityFrameworkCore; namespace KptBoardSystem.Test { public class KptBoardModelTest { [Fact(DisplayName = "KptBoardを修正する")] public void TestUpdateKptBoard() { using (var db = new KptBoardModel()) { var kptBoard = db.KptBoards.Where(b => b.Problem.Contains("続ける")).First(); kptBoard.Problem = "問題だけ"; db.Update(kptBoard); // 更新 db.SaveChanges(); } } KptBoardModelTest.cs
  • 39.  追加したテストを単体で実行する  DB Browser for SQLでレコードが更新されているのを確認 する 39Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストの実施
  • 40. 40Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストメソッドを追加 using Xunit; using System; using System.Linq; using Microsoft.EntityFrameworkCore; namespace KptBoardModel.Test { public class KptBoardModelTest { [Fact(DisplayName = "KptBoardを削除する")] public void TestDeleteKptBoard() { using (var db = new KptBoardModel()) { var kptBoard = db.KptBoards.Where(b => b.Problem == "問題だけ").First(); db.Remove(kptBoard); // 削除 db.SaveChanges(); } } KptBoardModelTest.cs
  • 41.  追加したテストを単体で実行する  DB Browser for SQLでレコードが削除されているのを確認 する 41Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストの実施
  • 42. 42Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストメソッドを追加 using Xunit; using System; using System.Linq; using Microsoft.EntityFrameworkCore; namespace KptBoardModel.Test { public class KptBoardModelTest { [Fact(DisplayName = "KptBoardを持っているUserを削除する")] public void TestDeleteUserHasKptBoard() { using (var db = new KptBoardModel()) { // Includeしていないので、Userの情報しか取れない var user = db.Users.Where((u) => u.Name == "User03").First(); db.Remove(user); // 削除 db.SaveChanges(); } } KptBoardModelTest.cs
  • 43.  追加したテストを単体で実行する  DB Browser for SQLでレコードが削除されているのを確認 する  Userを消しただけだが、KptBoardも一緒に消える 43Copyright (c) 2017 Eiwa System Management, Inc.2017/3/10 テストの実施