设置
我有Visual Studio 2013,使用EF6(代码优先使用现有数据库),Resharper 8并针对本地托管的MS SQL服务器2012运行我的调试会话。
代码段
问题在于这种方法:
public void Delete(MyEntityClass myEntityInstance)
{
DbContext.MyEntityClass.Remove(myEntityInstance);
}
在调用上一个方法后立即调用以下代码段
DbContext.SaveChanges();
模型
MyEntityClass与MyChildEntityClass的一对一关系
目的
我想删除我的 myEntityInstance 以及子实体(来自 MyChildEntityClass 的实例)。我确保在READ上我已经包含了子实体。
问题
当我运行此代码时,我在 SaveChanges()上收到错误,说我违反了外键约束。指示该方法不会与我的父实体一起删除子实体。我知道我需要确保在我的父实体中加载子实体以执行CASCADE删除。
奇怪的是,当我在DbContext.MyEntityClass.Remove(myEntityInstance);
上有断点并检查myEntityInstance(将myEntityInstance变量悬停并检查属性的值)然后让它进一步运行时,FK列在子表中设置为NULL,而对它有一个约束)
其他人是否有过这种鱼腥事件的经历?