前提・実現したいこと
EntityFrameworkCoreで特定のレコードをUpdateしたい。
発生している問題・エラーメッセージ
EntityFrameworkCoreのUpdateメソッドを使用すると、addしていないのにも関わらず、更新用のデータでレコード追加されてしまう。旧データと新データの2レコードになってしまう。
公式のリファレンスを読んでも理解できずで困っております。。
下記のようにすれば更新はできるのですが
var entity = _dataBaseService.Books.Where(p => p.id== targetID).FirstOrDefault(); entity.amountUsed = 2000;
できるかぎり、Entity(BooksData)のsetterは排除したいと考えています。
どなたか、ご教授願います。不明点あれば申しつけ下さい。
該当のソースコード
c#
1 public interface IDataBaseService 2 { 3 DbSet<BooksData> Books { get; set; } 4 } 5 6public class BooksData 7 { 8 public BooksData(int id, string m_no, int amountUsed, DateTime intime, DateTime registDate) 9 { 10 this.id = id; 11 this.m_no = m_no; 12 this.amountUsed = amountUsed; 13 this.intime = intime; 14 this.registDate = registDate; 15 } 16 17 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 18 public int id { get; } 19 20 public string m_no { get; } 21 22 public DateTime registDate { get; } 23 24 public int amountUsed { get; } 25 26 public DateTime intime { get; } 27 28 public DateTime utime { get; } 29 } 30 31public class Main{ 32 //省略 33 var dataModel = new BooksData(id, m_no, amountUsed, DateTime.Now, registDate); 34 35 //該当箇所 36 _dataBaseService.Books.Update(dataModel); 37 38 _dataBaseService.SaveChanges(); 39}
補足情報(FW/ツールのバージョンなど)
EntityFrameworkCore 3.00
EntityFrameworkCore.PostgresSQL 3.00
Postgres11
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/01 14:15
退会済みユーザー
2021/06/02 00:09 編集
退会済みユーザー
2021/06/02 01:35
退会済みユーザー
2021/06/02 02:10
2021/06/02 12:25