Siden det er et gjentrykk av artikkelen. Kilden er angitt her, vennligst tilgi meg hvis det finnes artikler som tidligere har blitt overført uten indikasjon, fordi noen av dem ikke lenger kan finne kilden, eller av andre grunner.
Hvis du blir fornærmet, vennligst kontakt meg, eller slett det, eller oppgi kilden.
For jeg pleide bare å ville samle gode artikler, men noen ganger svikter forbindelsen, så nå går jeg rett til meg selv når jeg møter en god.
Opprinnelig kilde http://blog.csdn.net/snowinfish/article/details/11567301
Når man skriver data til den ADO.NET enhetsmodellen i VS2012, sier den stadig "DbEntityValidationException ikke håndtert" og "Validering av en eller flere enheter feilet. For mer informasjon, se EntityValidationErrors Egenskaper.
Testet de to neste enhetene selv, hovedsakelig feilen forårsaket av "operate911".
Jeg sjekket informasjonen på nettet og viste til følgende artikkel.
Løsning for hvordan man ser EntityValidationErrors-detaljer
http://www.cnblogs.com/zhourq/archive/2011/11/03/2234720.html
Men når unntaket skrives, har ikke systemet "DbEntityValidationException", som antas å skyldes mangel på navneromsreferanse.
Så lagt til:
[csharp] se klartekst bruk av System.Data.Validation;
Den tilsvarende prosedyren modifiseres til: [csharp] se klartekst Prøv { entiteter. Operate911.Add (operate911); entiteter. SaveChanges(); } catch (DbEntityValidationException dbEx) {
} Start, ingen unntaksprompt, "operate911" skriver ikke data til databasetabellen. Grunnen til kontrollen er at når man skriver et supplerende program, er det ingen datafylling for en kolonne som ikke får lov til å være tom, og etter modifikasjon startes programmet og testen er vellykket.
Men hvis du ikke skriver et unntak, fortsett å be om den øverste feilen.
Dessuten kan parameteren "dbEx" etter setningen "catch (DbEntityValidationException dbEx)" skrives uten å skrive.
Fortsett å være ukjent...
09.12 Tillegg:
Ovenstående try og catch er skrevet feil, og unntaket kastes ikke, men endres til:
[csharp] se klartekst Prøv { var operateSpt = ny OperateSpt(ymd, timeNow, Operate); entiteter. OperateSpts.Add (operateSpt); entiteter. SaveChanges(); }
catch (DbEntityValidationException ex) { MessageBox.Show (f.eks. Melding); }
Resultatene vises i figuren nedenfor.
Fortsett å være ukjent...
Supplement: Problemløsning.
Årsak: De skrevne dataene er inkonsistente med tabellinnstillingene.
Min grunn er at på et visst trinn er de skrevne dataene tomme, men den opprinnelige tabellen er satt til "ikke tillatt å være tom", så det vil være et unntak når dette steget utføres.
Jeg var for uforsiktig og tenkte aldri på dette problemet da jeg så andre operasjoner skrevet til dataene mens jeg så på dataene.
|