コードファーストでのテーブル定義もなんとなくわかったので、追加・更新・削除でもしてみたいと思います。
基本的な流れは、変更操作をした後SaveChangesメソッドを呼び出すという流れになります。SaveChangesを呼び出すとEntity Frameworkが、それまでの変更を元にDBに対して更新作業をしてくれます。こんなDbContextを定義してる前庭で話を進めていきます。
using Microsoft.Data.Entity; namespace App51 { publicclass SampleContext : DbContext { public DbSet<Person> People { get; set; } protectedoverridevoid OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite("filename=sample.db"); } protectedoverridevoid OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Person>() .ToTable("People") .Property(x => x.Name) .IsRequired(); } } publicclass Person { publicint Id { get; set; } publicstring 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(); }