Ponieważ jest to przedruk artykułu. Źródło jest tutaj wskazane, proszę wybaczyć, jeśli są artykuły, które zostały wcześniej przeniesione bez wskazania, ponieważ niektóre z nich nie mogą już znaleźć źródła lub z innych powodów.
Jeśli poczujesz się urażony, skontaktuj się ze mną, usuń to lub podaj źródło.
Bo kiedyś chciałem po prostu zbierać dobre artykuły, ale czasem połączenie zawodzi, więc teraz idę prosto do siebie, gdy natrafię na dobry artykuł.
Oryginalne źródło http://blog.csdn.net/snowinfish/article/details/11567301
Podczas zapisu danych do modelu ADO.NET w VS2012 ciągle pojawia się komunikat "DbEntityValidationException nie obsłużony" oraz "Walidacja jednej lub więcej jednostek zakończyła się niepowodzeniem. Więcej informacji można znaleźć w EntityValidationErrors Properties.
Sam testowałem kolejne dwie jednostki, głównie błąd spowodowany przez "operate911".
Sprawdziłem informacje online i odwołałem się do następującego artykułu.
Obejście, jak zobaczyć szczegóły EntityValidationErrors
http://www.cnblogs.com/zhourq/archive/2011/11/03/2234720.html
Jednak podczas zapisu wyjątku system nie ma "DbEntityValidationException", co przypuszcza się za brak odniesienia do przestrzeni nazw.
Dodano więc:
[csharp] zobacz plaincopy używając System.Data.Validation;
Odpowiednia procedura jest modyfikowana na: [csharp] zobacz plaincopy spróbuj { Entity. Operate911.Add(operate911); istoty. SaveChanges(); } catch (DbEntityValidationException dbEx) {
} Start, bez wyjątku, "operate911" nie zapisuje danych do tabeli bazy danych. Powodem sprawdzania jest to, że podczas pisania programu uzupełniającego nie ma wypełniania danych dla kolumny, która nie może być pusta, a po modyfikacji program jest uruchamiany i test przebiega pomyślnie.
Jednak jeśli nie napiszesz wyjątku, nadal wywołuj najwyższy błąd.
Ponadto parametr "dbEx" po zdaniu "catch (DbEntityValidationException dbEx)" można zapisać bez zapisu.
Nadal pozostają nieznane...
09.12 Dodatek:
Powyższe próby i złapanie są błędnie zapisane, a wyjątek nie jest rzucany, lecz zmieniony na:
[csharp] zobacz plaincopy spróbuj { var operateSpt = nowy OperateSpt(ymd, timeNow, Operate); istoty. OperateSpts.Add(operateSpt); istoty. SaveChanges(); }
catch (DbEntityValidationException ex) { MessageBox.Show (np. Message); }
Wyniki przedstawiono na poniższym rysunku.
Nadal pozostają nieznane...
Suplement: Rozwiązywanie problemów.
Powód: Dane pisemne są niezgodne z ustawieniami tabel.
Mój powód jest taki, że na pewnym etapie zapisane dane są puste, ale oryginalna tabela jest ustawiona na "nie wolno być puste", więc będzie wyjątek po wykonaniu tego kroku.
Byłem zbyt nieostrożny i nigdy nie pomyślałem o tym problemie, gdy widziałem inne operacje zapisane w danych podczas ich analizy.
|