实体框架在异常中给出了通用消息,而没有告诉我确切的实体和导致错误的属性.如何获取有关错误的更多信息?
在许多情况下都会发生这种情况
操作失败:无法更改关系,因为一个或多个外键属性不可为空.当对关系进行更改时,相关的外键属性将设置为空值.如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象.
和
将datetime2数据类型转换为日期时间数据类型会导致超出范围的值.该语句已终止.
例外细节:
[SqlException(0x80131904):将datetime2数据类型转换为日期时间数据类型导致超出范围的值.语句已终止.] System.Data.SqlClient.SqlConnection.OnError(SqlException异常,Boolean breakConnection)+404 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()+ 412 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior ,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)+2660 System.Data.SqlClient.SqlDataReader.ConsumeMetaData()+59 System.Data.SqlClient.SqlDataReader.get_MetaData()+118 System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader的DS,RunBehavior runBehavior,字符串resetOptionsString)6431425个System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(的CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔returnStream,布尔异步)6432994 System.Data.SqlClient.SqlCommand.RunExecuteReader(的CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method,DbAsyncResult result)+538 System.Data.SqlClient.SqlCommand.RunExecuteRead er(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method)+28 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior,String method)+256 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)+19 System .Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator,EntityConnection connection,Dictionary
2 identifierValues, List1 generatedValues)+270 System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter adapter)+391[UpdateException:更新条目时发生错误.有关详细信息,请参阅内部异常.] System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter adapter)+11223976 System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)+833 System.Data.Entity .Internal.InternalContext.SaveChanges()+ 218
[DbUpdateException:更新条目时发生错误.有关详细信息,请参阅内部异常.] System.Data.Entity.Internal.InternalContext.SaveChanges()+ 291
这是我的解决方案中的代码:
try
{
_context.SaveChanges();
}
catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
{
Exception raise = dbEx;
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
string message = string.Format("{0}:{1}", validationErrors.Entry.Entity.ToString(), validationError.ErrorMessage);
//raise a new exception inserting the current one as the InnerException
raise = new InvalidOperationException(message , raise);
}
}
throw raise;
}
Run Code Online (Sandbox Code Playgroud)
您可以将其用作添加到解决方案中的基础...它使用Entity Framework中的所有详细信息构建一组嵌套的异常.
| 归档时间: |
|
| 查看次数: |
9849 次 |
| 最近记录: |