Entity Frameworkを使用してPostgresqlのDBにインサートとアップデートの処理を行いたいと考えています。
しかし、インサートの処理はうまく動くが、アップデートの処理がうまくいきません。
メインメソッドの「db.SaveChanges();」で主キーが一致する場合はUpdateが実行され一致しない場合は、insertが実行される想定ですが、違うのでしょうか。
申し訳ありませんが教えてください。
表示されるエラーメッセージは下記のとおりです。
{"An error occurred while updating the entries. See the inner exception for details."}
C#
1using ConsoleApp2.Entity; 2using System; 3using System.Collections.Generic; 4using System.Linq; 5using System.Text; 6using System.Threading.Tasks; 7 8namespace ConsoleApp2 9{ 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 using (var db = new TestContext()) 15 { 16 var tan = new TestTable(); 17 tan.yearmonthday = DateTime.ParseExact("2020/02/24", "yyyy/MM/dd", null); 18 tan.basyo = "00"; 19 tan.num = 2; 20 tan.chaku1 = 0; 21 tan.chaku2 = 0; 22 tan.chaku3 = 0; 23 tan.happyotime = DateTime.ParseExact("2020/02/24", "yyyy/MM/dd", null); 24 tan.str1 = "aa"; 25 tan.str2 = "bb"; 26 27 db.testTable.Add(tan); 28 29 try 30 { 31 db.SaveChanges(); 32 } 33 catch (Exception ex) 34 { 35 Console.WriteLine(ex.ToString()); 36 throw ex; 37 } 38 db.Dispose(); 39 } 40 } 41 } 42} 43
C#
1using ConsoleApp2.Entity; 2using Microsoft.EntityFrameworkCore; 3using System; 4using System.Collections.Generic; 5using System.Linq; 6using System.Text; 7using System.Threading.Tasks; 8 9namespace ConsoleApp2 10{ 11 class TestContext : DbContext 12 { 13 public DbSet<TestTable> testTable { get; set; } 14 15 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 16 { 17 optionsBuilder.UseNpgsql("Host=localhost;Username=postgres;Password=postgres;Database=postgres"); 18 } 19 protected override void OnModelCreating(ModelBuilder modelBuilder) 20 { 21 modelBuilder.Entity<TestTable>() 22 .HasKey(c => new { c.yearmonthday, c.basyo, c.num, c.chaku1, c.chaku2, c.chaku3}); 23 } 24 } 25} 26 27
C#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel.DataAnnotations.Schema; 4using System.Linq; 5using System.Text; 6using System.Threading.Tasks; 7 8namespace ConsoleApp2.Entity 9{ 10 public class TestTable 11 { 12 public DateTime yearmonthday { get; set; } 13 14 public string basyo { get; set; } 15 16 public int num { get; set; } 17 18 public int chaku1 { get; set; } 19 20 public int chaku2 { get; set; } 21 22 public int chaku3 { get; set; } 23 24 public DateTime happyotime { get; set; } 25 26 public string str1 { get; set; } 27 28 public string str2 { get; set; } 29 } 30} 31
回答2件
あなたの回答
tips
プレビュー