Deoarece este o reeditare a articolului Sursa este indicată aici, vă rog să mă iertați dacă există articole care au fost transferate înainte fără indicație, deoarece unele nu mai pot găsi sursa sau din alte motive.
Dacă te simți ofensat, te rog să mă contactezi, să ștergi sau să indici sursa.
Pentru că înainte voiam doar să colecționez articole bune, dar uneori conexiunea eșuează, așa că acum merg direct la mine când dau peste unul bun.
Sursa originală http://blog.csdn.net/snowinfish/article/details/11567301
Când scrii date în modelul entității ADO.NET în VS2012, tot apare mesajul "DbEntityValidationException not handled" și "Validarea uneia sau mai multor entități a eșuat. Pentru mai multe informații, vezi Proprietățile EntityValidationErrors.
Am testat eu următoarele două entități, în principal eroarea cauzată de "operate911".
Am verificat informațiile online și am consultat următorul articol.
Soluție alternativă pentru cum să vizualizezi detaliile despre EntityValidationErrors
http://www.cnblogs.com/zhourq/archive/2011/11/03/2234720.html
Totuși, la scrierea excepției, sistemul nu are "DbEntityValidationException", care se presupune că este o lipsă de referință la spațiul de nume.
Așa am adăugat:
[csharp] vizualizare simplă folosind System.Data.Validation;
Procedura corespunzătoare este modificată pentru: [csharp] vizualizare simplă încearcă { entități. Operate911.Add(operate911); entități. SaveChanges(); } prinde (DbEntityValidationException dbEx) {
} Pornire, fără excepție, "operate911" nu scrie date în tabelul bazei de date. Motivul verificării este că, atunci când scrii un program suplimentar, nu există umplerea datelor pentru o coloană care nu este permisă să fie goală, iar după modificare, programul este pornit și testul are succes.
Totuși, dacă nu scrii o excepție, continuă să afișezi eroarea de sus.
Mai mult, parametrul "dbEx" după propoziția "catch (DbEntityValidationException dbEx)" poate fi scris fără a fi scris.
Să rămână necunoscut...
09.12 Addendum:
Încercarea și prinderea de mai sus sunt scrise greșit, iar excepția nu este aruncată, ci schimbată la:
[csharp] vizualizare simplă încearcă { var operateSpt = new OperateSpt(ymd, timeNow, Operate); entități. OperateSpts.Add(operateSpt); entități. SaveChanges(); }
catch (DbEntityValidationException ex) { MessageBox.Show(ex. Mesaj); }
Rezultatele sunt prezentate în figura de mai jos.
Să rămână necunoscut...
Supliment: Rezolvarea problemelor.
Motiv: Datele scrise sunt inconsistente cu setările tabelului.
Motivul meu este că, la un anumit pas, datele scrise sunt goale, dar tabelul original este setat pe "nu este permis să fie gol", deci va exista o excepție când se efectuează acest pas.
Am fost prea neglijent și nu m-am gândit niciodată la această problemă când am văzut alte operații scrise pe date în timp ce mă uitam la ele.
|