Mivel ez a cikk újranyomása, a forrás itt szerepel, kérem, bocsásson meg, ha olyan cikkeket már áthelyeztek előzetes jelzés nélkül, mert néhányan már nem találják meg a forrást, vagy más okokból.
Ha megsértődsz, kérlek, vedd fel velem a kapcsolatot, töröld vagy jelezd a forrást.
Mert régen csak jó cikkeket akartam gyűjteni, de néha a kapcsolat meghibásodott, így most közvetlenül magamhoz fordulok, amikor találok egy jót.
Eredeti forrás http://blog.csdn.net/snowinfish/article/details/11567301
Amikor adatokat írunk a ADO.NET entitás modelljébe a VS2012-ben, folyamatosan azt mondja: "DbEntityValidationException nem kezelve" és "Egy vagy több entitás validálása sikertelenül. További információért lásd: EntityValidationErrors Properties.
A következő két entitást magam teszteltem, főleg az "operate911" hibáját.
Átnéztem az információkat az interneten, és hivatkoztam a következő cikkre.
Megoldás az EntityValidationErrors részleteinek megtekintésére
http://www.cnblogs.com/zhourq/archive/2011/11/03/2234720.html
Azonban a kivétel írásakor a rendszerben nincs "DbEntityValidationException", ami névtér hivatkozás hiányát feltételezik.
Így hozzáadták:
[csharp] Nézd meg a tiszta másolatot System.Data.Validation használatával;
A megfelelő eljárás a következőképpen változik: [csharp] Nézd meg a tiszta másolatot próbáld ki { entitások. Operate911.Add(operate911); entitások. SaveChanges(); } catch (DbEntityValidationException dbEx) {
} Start, nincs kivétel prompt, az "operate911" nem ír adatokat az adatbázis táblájára. Az ellenőrzés oka az, hogy kiegészítő program írásakor nem töltenek ki adatokat egy olyan oszlopban, amely nem szabad üres lenni, és módosítás után a program elindul, és a teszt sikeres.
Ha azonban nem írsz kivételt, folytasd a top hibát.
Továbbá, a "catch (DbEntityValidationException dbEx)" mondat után a "dbEx" paraméter írás nélkül is írható.
Továbbra is ismeretlen...
09.12 Kiegészítés:
A fenti próba és elkapás helytelenül van leírva, és a kivételt nem dobják el, hanem megváltoztatják:
[csharp] Nézd meg a tiszta másolatot próbáld ki { var operateSpt = új OperateSpt(ymd, timeNow, Operate); entitások. OperateSpts.Add(operationSpt); entitások. SaveChanges(); }
catch (DbEntityValidationException ex) { MessageBox.Show (pl. Üzenet); }
Az eredményeket az alábbi ábrán mutatják be.
Továbbra is ismeretlen...
Kiegészítés: Problémamegoldás.
Ok: Az írott adatok nem egyeznek a táblázat beállításaival.
Az indok, hogy egy adott lépésnél az írott adatok üresek, de az eredeti tábla "nem szabad üres lenni" módjára van beállítva, így kivétel lesz a lépés végrehajtásakor.
Túl figyelmetlen voltam, és soha nem gondoltam erre a problémára, amikor láttam, hogy más műveletek írtak az adatokra, miközben az adatokat néztem.
|