Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 14748|Antwoord: 0

[Opgelost] Verificatie faalt voor één of meer entiteiten. Voor meer informatie, zie de eigenschap EntityValidationErrors.

[Link kopiëren]
Geplaatst op 08-10-2015 20:47:51 | | |
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.





Vorig:Dianping en Meituan gaan fuseren voor wederzijds voordeel en win-winsituaties.
Volgend:ASP.NET een verzameling methoden om de rootmap te krijgen
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com