gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:18:42 24 4
gpt4 key购买 nike

我正在使用 Entity Framework 4 并遇到以下设置和问题。

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

问题是,当我尝试删除一个数据项实体时,我得到了这个异常:

exception: System.Data.UpdateException: Invalid data encountered. A required relationship is missing. Examine StateEntries to determine the source of the constraint violation.

如果我关闭延迟加载或加载 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.

最佳答案

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

var detailItem = new DataItemDetail { Id = d.Id }; 
_db.DataItemDetails.Attach(detailItem);
_db.DataItems.DeleteObject(d);
_db.SaveChanges();

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

关于mysql - 删除 EF4 中的实体而不加载整个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com