Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mengendalikan dan debug Kesalahan Pengesahan Entiti dalam Rangka Kerja Entiti?
Sekiranya berlaku mesej ralat, "Satu atau lebih entiti gagal. Lihat atribut" Entiti ValidationError "untuk mengetahui lebih lanjut, anda boleh mengakses kumpulan ralat pengesahan.
periksa ralat pengesahan
<code class="language-csharp">try { // 代码 context.SaveChanges(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("实体: \"{0}\", 状态: \"{1}\"", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach(var ve in eve.ValidationErrors) { Console.WriteLine("- 属性: \"{0}\", 错误: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; }</code>Atribut EntityValidationErrs mengandungi entiti kegagalan pengesahan, manakala ValidationError mengandungi senarai ralat tahap atribut.
Penambahbaikan Lanjutan
<code class="language-csharp">foreach(var ve in eve.ValidationErrors) { Console.WriteLine("- 属性: \"{0}\", 值: \"{1}\", 错误: \"{2}\"", ve.PropertyName, eve.Entry.CurrentValues.GetValue<object>(ve.PropertyName), ve.ErrorMessage); }</code>
keabnormalan tersuai yang mengandungi mesej terperinci:
<code class="language-csharp">Debug.Write("- 属性: \"{0}\", 值: \"{1}\", 错误: \"{2}\"", ve.PropertyName, eve.Entry.CurrentValues.GetValue<object>(ve.PropertyName), ve.ErrorMessage);</code>Pengecualian ini disahkan dengan memformat mesej:
ReWahing SaveChanges:
<code class="language-csharp">public class FormattedDbEntityValidationException : Exception { public override string Message => InnerException != null ? InnerException?.ToDetailedString() : ""; }</code>Ini memastikan bahawa butiran pengesahan akan dipaparkan dalam log ralat (em, Elmah).
Atas ialah kandungan terperinci Bagaimana untuk mengendalikan dan debug Kesalahan Pengesahan Entiti dalam Rangka Kerja Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!