我正在使用Entity Framework 6.1.3在一个.NET 4.5应用程序中,采用Code First和手工制作的表模式,在Oracle数据库服务器上。大多数功能都能正常工作。对于一个新功能,在SaveChanges中抛出以下异常:
操作失败:由于一个或多个外键属性是非空的,因此无法更改关系。当对关系进行更改时,相关的外键属性将设置为null值。如果外键不支持null值,则必须定义一个新关系,将外键属性分配给另一个非null值,或删除不相关的对象。
堆栈跟踪:
System.Data.Entity.Core.Objects.ObjectContext.PrepareToSaveChanges(System.Data.Entity.Core.Objects.SaveOptions) System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(System.Data.Entity.Core.Objects.SaveOptions, bool) System.Data.Entity.Internal.InternalContext.SaveChanges() (my code)
它没有提供有关问题的任何信息。这并没有帮助我找到问题。SQL日志为空,所以我猜测问题在EF尝试连接数据库之前就被本地检测到了。
我的问题是: 如何调试这个问题?哪个对象的哪个外键具有不应该有的值的详细信息在哪里?Entity Framework是否提供可包含有关已执行操作的内部数据的跟踪日志?
情况太复杂了,不能在此展示,请不要要求展示。我想自己解决这个问题,只需要协助一下。
操作失败:由于一个或多个外键属性是非空的,因此无法更改关系。当对关系进行更改时,相关的外键属性将设置为null值。如果外键不支持null值,则必须定义一个新关系,将外键属性分配给另一个非null值,或删除不相关的对象。
堆栈跟踪:
System.Data.Entity.Core.Objects.ObjectContext.PrepareToSaveChanges(System.Data.Entity.Core.Objects.SaveOptions) System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(System.Data.Entity.Core.Objects.SaveOptions, bool) System.Data.Entity.Internal.InternalContext.SaveChanges() (my code)
它没有提供有关问题的任何信息。这并没有帮助我找到问题。SQL日志为空,所以我猜测问题在EF尝试连接数据库之前就被本地检测到了。
我的问题是: 如何调试这个问题?哪个对象的哪个外键具有不应该有的值的详细信息在哪里?Entity Framework是否提供可包含有关已执行操作的内部数据的跟踪日志?
情况太复杂了,不能在此展示,请不要要求展示。我想自己解决这个问题,只需要协助一下。