在SaveChanges数据上下文中保存更改时,有没有办法确定哪个实体导致错误?例如,有时我会忘记将日期分配给不可为空的日期字段并获得"无效日期范围"错误,但我没有得到关于它由哪个实体或哪个字段引起的信息(我通常可以通过以下方式跟踪它煞费苦心地经历我的所有物品,但这是非常耗时的).堆栈跟踪非常无用,因为它只会在SaveChanges调用时向我显示错误,而没有任何关于它究竟发生在何处的其他信息.
请注意,我不打算解决我现在遇到的任何特定问题,我只想知道是否有办法告诉哪个实体/字段导致问题.
以堆栈跟踪的快速示例为例 - 在这种情况下发生错误,因为CreatedOn未在IAComment实体上设置日期,但是无法从此错误/堆栈跟踪中判断
[SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.]
System.Data.SqlTypes.SqlDateTime.FromTimeSpan(TimeSpan value) +2127345
System.Data.SqlTypes.SqlDateTime.FromDateTime(DateTime value) +232
System.Data.SqlClient.MetaType.FromDateTime(DateTime dateTime, Byte cb) +46
System.Data.SqlClient.TdsParser.WriteValue(Object value, MetaType type, Byte scale, Int32 actualLength, Int32 encodingByteSize, Int32 offset, TdsParserStateObject stateObj) +4997789
System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj, Boolean isCommandProc) +6248
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +987
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, …Run Code Online (Sandbox Code Playgroud)