实体框架外键InvalidOperationException

时间:2015-03-17 03:07:15

标签: c# asp.net-mvc entity-framework

SaveChanges()调用期间发生InvalidOperationException时,有没有办法以某种方式输出更多详细信息/信息?

  

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

我没有从数据库中删除任何内容,因此类似于此问题的问题对我没有帮助。这条消息是不言自明的,但是我只是看不到代码中的错误,如果异常提供了有关哪个属性和哪个外键有问题的更多信息,那将会很有帮助。

编辑 - 我检查了InnerException并且它是空的。

1 个答案:

答案 0 :(得分:2)

例如,如果您有下一个结构:

  public class Client
  {
     public int ClientID { get; set; }
     public string Name { get; set; }

     public int ClientTypeID { get; set; }
     public ClientType ClientType { get; set; }
  }

  public class ClientType
  {
     public int ClientTypeID { get; set; }
     public string Description { get; set; }
  }

如果您要更改“名称”属性,例如,您的属性“ClientType”必须为null,否则它将尝试创建,更新或删除您的客户端类型。

因此,在SaveChanges();

之前,只需将ClientType设置为null

如果您发布更多代码,我们可以确定它发生了什么,但这是我的猜测