C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 172 を表示中)
■98908 / )  EFでのUpDate文
□投稿者/ 初心のもの (38回)-(2022/01/18(Tue) 12:14:00)

分類:[.NET 全般] 


 [C# visual studio2019]

  毎度すいません。いつも助かっているのでまたの教えてもらいたいです。

 毎回質問が似てるのですが、C#,Entity frameworkを使っての[UpDate]を試みてます。
  SQLからTextBoxに入力されているID(主キー)を確認して、データがなければ[Insert]、あれば[UpDate]をボタン一つで実行してもらいたいのですが
 [Insert]はできるのですが、[UpDate]だけcatchに入ってエラーを吐き出されます。
 
  log内容
 2022-01-18 11:59:51,418  ERROR  [1]    MainWindow.Form1  Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
   場所 System.Data.Entity.Internal.InternalContext.SaveChanges()
   場所 System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
   場所 System.Data.Entity.DbContext.SaveChanges()
   場所 MainWindow.Form1.Up_InserBtm_Click(Object sender, EventArgs e) 場所 \MainWindow\Form1.cs:行 134

 SaveChanges()がうまく動作してない感じです
[code]
        private void Up_InserBtm_Click(object sender, EventArgs e)
        {
            var idBox = PatientIDBox;
            var nBox1 = PatientsNameBox1;
            var nBox2 = PatientsNameBox2;
            var nBox3 = PatientsNameBox3;
            var bdBox = PatientsBDBox;
            var sexBox = PatientsSexBox;
            var ageBox = PatientsAgeBox;

            using (var pdbContext = new PDBContext())
            {

                try
                {
                    var patient = pdbContext.M_Patient.FirstOrDefault(x => x.PatientID == idBox.Text);
                    if (patient == null)
                    {
                        pdbContext.M_Patient.Add(new M_Patient
                        {
                            PatientID = idBox.Text,
                            PatientsName1 = nBox1.Text,
                            PatientsName2 = nBox2.Text,
                            PatientsName3 = nBox3.Text,
                            PatientsBirthDate = bdBox.Text,
                            PatientsSex = sexBox.Text,
                            PatientsAge = ageBox.Text,
                            InsertDate = DateTime.Now,
                            UpdateDate = DateTime.Now
                        });
                    }
                    else                                              //ここがUpdate文のつもり
                    {
                            M_Patient add_Patient = new M_Patient      
                            {
                                PatientsName1 = nBox1.Text,
                                PatientsName2 = nBox2.Text,
                                PatientsName3 = nBox3.Text,
                                PatientsBirthDate = bdBox.Text,
                                PatientsSex = sexBox.Text,
                                PatientsAge = ageBox.Text,
                                InsertDate = DateTime.Now,
                                UpdateDate = DateTime.Now
                            };
                            pdbContext.M_Patient.Add(add_Patient);
                    }
                    pdbContext.SaveChanges();
                }
                catch (Exception ex)
                {
                    LogManager.GetLogger(GetType().FullName).Error($"{ex.Message}\r\n{ex.StackTrace}");
                    while ((ex = ex.InnerException) != null)
                    {
                        LogManager.GetLogger(GetType().FullName).Error($"{ex.Message}\r\n{ex.StackTrace}");
                    }
                }
                finally
                {
                    pdbContext.Dispose();
                }
            }
        }
[/code]

  何かわかればお願いしたいです

返信 編集キー/


管理者用

- Child Tree -