Omdat het een herdruk van het artikel is. De bron wordt hier aangegeven, vergeef me als er artikelen zijn die eerder zonder aanwijzing zijn overgedragen, omdat sommige de bron niet meer kunnen vinden, of om andere redenen.
Als je je beledigd voelt, neem dan contact met me op, verwijder het of geef de bron aan.
Want vroeger wilde ik gewoon goede artikelen verzamelen, maar soms faalt de verbinding, dus nu ga ik direct naar mezelf als ik een goede tegenkom.
Oorspronkelijke bron http://blog.csdn.net/snowinfish/article/details/11567301
Bij het schrijven van data naar het ADO.NET entity model in VS2012 blijft het zeggen "DbEntityValidationException not handled" en "Validatie van één of meer entiteiten mislukt. Voor meer informatie, zie EntityValidationErrors Properties.
Ik heb de volgende twee entiteiten zelf getest, vooral de fout veroorzaakt door "operate911".
Ik heb de informatie online gecontroleerd en verwezen naar het volgende artikel.
Workaround voor het bekijken van EntityValidationErrors-details
http://www.cnblogs.com/zhourq/archive/2011/11/03/2234720.html
Bij het schrijven van de uitzondering heeft het systeem echter geen "DbEntityValidationException", wat wordt vermoed te zijn dat er geen namespace-referentie is.
Dus toegevoegd:
[csharp] bekijk plaincopy gebruik van System.Data.Validation;
De bijbehorende procedure wordt aangepast tot: [csharp] bekijk plaincopy Probeer het { entiteiten. Operate911.Add (operate911); entiteiten. SaveChanges(); } catch (DbEntityValidationException dbEx) {
} Start, geen uitzonderingsprompt, "operate911" schrijft geen data naar de databasetabel. De reden voor de controle is dat bij het schrijven van een aanvullend programma er geen gegevensvulling is voor een kolom die niet leeg mag zijn, en na aanpassing wordt het programma gestart en is de test succesvol.
Als je echter geen uitzondering schrijft, blijf dan de topfout aanwijzen.
Bovendien kan de parameter "dbEx" na de zin "catch (DbEntityValidationException dbEx)" worden geschreven zonder te schrijven.
Blijf onbekend...
09.12 Addendum:
De bovenstaande try en catch zijn verkeerd geschreven, en de uitzondering wordt niet gegooid, maar veranderd in:
[csharp] bekijk plaincopy Probeer het { var operateSpt = new OperateSpt(ymd, timeNow, Operate); entiteiten. OperateSpts.Add (operateSpt); entiteiten. SaveChanges(); }
catch (DbEntityValidationException ex) { MessageBox.Show(bijv. Boodschap); }
De resultaten zijn te zien in de onderstaande figuur.
Blijf onbekend...
Supplement: Probleemoplossing.
Reden: De geschreven data is niet consistent met de tabelinstellingen.
Mijn reden is dat bij een bepaalde stap de geschreven data leeg is, maar de oorspronkelijke tabel is ingesteld op "niet toegestaan leeg te zijn", dus er zal een uitzondering zijn wanneer deze stap wordt uitgevoerd.
Ik was te onvoorzichtig en dacht nooit aan dit probleem toen ik andere operaties naar de data zag schrijven terwijl ik naar de data keek.
|