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)
如果您不想加载该属性,则必须欺骗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知道如果它删除了关系的一端,它也应该删除另一端但是因为你没有加载另一端它不能这样做.