コードファーストでのテーブル定義もなんとなくわかったので、追加・更新・削除でもしてみたいと思います。
基本的な流れは、変更操作をした後SaveChangesメソッドを呼び出すという流れになります。SaveChangesを呼び出すとEntity Frameworkが、それまでの変更を元にDBに対して更新作業をしてくれます。こんなDbContextを定義してる前庭で話を進めていきます。
using Microsoft.Data.Entity; namespace App51 { public class SampleContext : DbContext { public DbSet<Person> People { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite("filename=sample.db"); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Person>() .ToTable("People") .Property(x => x.Name) .IsRequired(); } } public class Person { public int Id { get; set; } public string Name { get; set; } } }
追加
DbSetにAddしてSaveChangesです。
using (var ctx = new SampleContext()) { var p = new Person { Name = "Tanaka" }; var p2 = new Person { Name = "Kimura" }; ctx.People.Add(p); ctx.People.Add(p2); ctx.SaveChanges(); Debug.WriteLine($"{p.Id} {p.Name}"); Debug.WriteLine($"{p2.Id} {p2.Name}"); }
SaveChanges後には、Idに値がふられていること(DBで自動割り当てにしてるから)が確認できます。
更新
更新は、DbContextから取得したデータに対して変更をしてSaveChangesをします。
using (var ctx = new SampleContext()) { var p = ctx.People.First(); p.Name = "Ohta"; ctx.SaveChanges(); }
削除
データの削除は、DbSetから取得したエンテティに対してDbSetのRemove(たくさんある場合はRemoveRangeを使うと楽)メソッドに渡してSaveChangesすることで削除されます。
using (var ctx = new SampleContext()) { var p = ctx.People.First(); ctx.People.Remove(p); ctx.SaveChanges(); }