删除EF4中的实体而不加载整个实体

Mar*_*kus 2 mysql entity-framework-4

我正在使用实体框架4并具有以下设置和问题.

我在MySql中有一个表,元数据字段是一个blob字段.使用此处描述的表拆分技术,我将表分为两个实体(DataItem和DataItemDetails).这样我就可以在不加载blob的情况下加载所有元数据.

问题是,当我尝试删除dataitem实体时,我得到以下异常:

exception:System.Data.UpdateException:遇到无效数据.缺少必需的关系.检查StateEntries以确定约束违规的来源.

如果我转向Lazy Loading或加载DataItemDetail部分,我可以删除DataItem.

这没关系,但我不想加载数据只是为了删除它.

if (!D.DataItemDetailReference.IsLoaded)
     D.DataItemDetailReference.Load();
_db.DataItems.DeleteObject(d);
_db.SaveChanges();


_db is the ObjectContext dereived class and D is an instance of the DataItem class.
Run Code Online (Sandbox Code Playgroud)

Lad*_*nka 6

如果您不想加载该属性,则必须欺骗EF,以便它认为DataItemDetail已加载相关内容.

var detailItem = new DataItemDetail { Id = d.Id }; 
_db.DataItemDetails.Attach(detailItem);
_db.DataItems.DeleteObject(d);
_db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

这里的问题是表拆分使用1:1关系,EF知道如果它删除了关系的一端,它也应该删除另一端但是因为你没有加载另一端它不能这样做.