문자열 필드가 너무 긴 EF 6.01 SaveChanges를 통해 SQL 2012 데이터베이스를 업데이트 할 때 예상대로 예외가 발생합니다. 내가 무엇을하고 싶은지는 가장 깊은 SqlException이 단지 나를 알려주 듯이 문제를 일으키는 테이블과 컬럼을 찾기 위해 Exception으로 들어가는 것이다. -EF 6.01에서 DbEntityValidationException 예외를주지 않는 이유는 무엇입니까?
문자열 또는 바이너리 데이터가 잘릴 것이다.
그러나 어떤 열이나 테이블이 아닙니다. 나는 아래와 같은 코드를 가지고 어떤 유효성 검사 오류에 대해서도 말할 준비가되어 있지만 그런 예외는 얻지 못한다.
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
}
}
}
예외는 SqlException을 포함하는 UpdateException을 포함하는 DbUpdateException으로 중첩되어 있으며 이들 중 어느 것도 열 정보를 갖고 있지 않습니다. 왜 DbEntityValidationException을 얻지 못합니까? 문제를 일으키는 열을 찾을 수있는 다른 방법이 있습니까?
이 경우 어떤 항목이 문제를 일으켰는지 알지만 나중에 쉽게 알려주도록 코드를 추가하고 싶습니다. EF가 SQL에 제공하기 전에 항목을 확인하도록 할 수 있습니까? 컨텍스트에 3 개의 객체를 추가하고 나서 SaveChanges를 수행합니다. – Dave
@Dave 어떤 방법론을 사용하고 있습니까? 코드 첫 번째? 데이터베이스 우선? –
Steven, Model First를 사용 중이며 MSFT가 Model First를 버렸기 때문에 Code First로 변환하는 프로젝트가 있습니다. – Dave