読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

UWPでEntity Framework 追加・更新・削除

コードファーストでのテーブル定義もなんとなくわかったので、追加・更新・削除でもしてみたいと思います。

基本的な流れは、変更操作をした後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();
}