当我用实体框架保存实体时,我自然认为它只会尝试保存指定的实体.但是,它也试图保存该实体的子实体.这导致了各种完整性问题.如何强制EF仅保存我要保存的实体,因此忽略所有子对象?
如果我手动将属性设置为null,则会收到错误"操作失败:由于一个或多个外键属性不可为空,因此无法更改关系." 这非常适得其反,因为我将child对象设置为null,因此EF会将其单独留下.
为什么我不想保存/插入子对象?
由于这是在评论中来回讨论,我将给出一些理由说明为什么我希望我的孩子对象保持独立.
在我正在构建的应用程序中,EF对象模型没有从数据库加载,而是用作我在解析平面文件时填充的数据对象.在子对象的情况下,其中许多引用定义父表的各种属性的查找表.例如,主要实体的地理位置.
由于我自己填充了这些对象,因此EF认为这些是新对象,需要与父对象一起插入.但是,这些定义已经存在,我不想在数据库中创建重复项.我只使用EF对象进行查找并填充主表实体中的外键.
即使子对象是真实数据,我需要首先保存父对象并获得主键或EF似乎只是搞乱了.希望这能给出一些解释.