在SaveChanges()
调用期间发生InvalidOperationException时,有没有办法以某种方式输出更多详细信息/信息?
操作失败:无法更改关系,因为 一个或多个外键属性是不可为空的。当一个 改变了关系,相关的外键属性是 设置为空值。如果外键不支持空值, 必须定义新的关系,外键属性必须是 分配了另一个非空值,或者不相关的对象必须是 删除。
我没有从数据库中删除任何内容,因此类似于此问题的问题对我没有帮助。这条消息是不言自明的,但是我只是看不到代码中的错误,如果异常提供了有关哪个属性和哪个外键有问题的更多信息,那将会很有帮助。
编辑 - 我检查了InnerException并且它是空的。
答案 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如果您发布更多代码,我们可以确定它发生了什么,但这是我的猜测