0

我正在使用带有实体框架和 MVC 4(asp.net) 的 databasefirst 方法,并且不时地执行以下操作:

操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。

最有可能我有一个无意的空引用,这是由于转换步骤的任何部分(从视图到视图模型,通过自动映射器到数据库对象)。

我想知道的是,是否有某种方法可以获取问题所在的信息,以及导致问题的外键。我曾尝试跟踪数据库,但似乎应用程序在尝试保存到数据库之前就知道存在问题。我可以以某种方式调试这个吗?获取更多错误信息?

4

2 回答 2

0

这些类型的错误可能令人沮丧,因为它们很难追踪。

我将从清除数据库中的所有数据开始(如果需要,备份它)。

然后,在 Management Studio 中打开数据库并将表拖放到可视化设计器上。然后,您将获得有关关系是什么样子的视觉线索。你可能会得到一个惊喜!

于 2013-06-29T17:53:23.767 回答
0

如果您更改了数据库架构(模型)并且您的数据库有一些数据,则可能会发生这些类型的错误。两个或多个表具有使用外键的关系。

可能的解决方案

删除数据库并再次应用迁移。

于 2017-02-02T17:26:08.920 回答