gpt4 book ai didi

.net - 使用 .Net Entity Framework 问题删除具有子关系的实体

转载 作者:行者123 更新时间:2023-12-04 06:55:33 26 4
gpt4 key购买 nike

我的天啊,EF太让人沮丧了。我似乎无法理解我需要做什么,所以我可以删除一个对象。我似乎能够删除对象,但不能删除相关的子对象。谁能告诉我当您要删除给定对象的所有相关子对象时的经验法则是什么?

我试过像这样加载所有相关的对象:

Entry entry = ModelContext.GetObjectByKey(new EntityKey("ModelContainer.EntrySet", "Id", id)) as Entry;
entry.ChildEnteries.Load();

if (entry != null)
{
ModelContext.DeleteObject(entry);
ModelContext.SaveChanges();
}

我收到与关系相关的错误: A relationship is being added or deleted from an AssociationSet 'EntryEntry'. With cardinality constraints, a corresponding 'Entry1' must also be added or deleted.
为什么我不能使用 modelcontext.GetObjectByKey 加载对象并将其与其子对象一起删除?

我的另一个问题是我可以像这样使用实体命令删除对象吗?
DELETE e from objectset as e where e.id = 12

我尝试了一些变体,所有变体都抛出异常。

最佳答案

如果不使用级联删除,则必须单独删除引用的对象。

然后我想你想要这样的东西:

ObjectSet os = ModelContext.ObjectSet.First(x => x.id == 12);
ModelContext.DeleteObject(os);
ModelContext.SaveChanges();

您也可以在 Entity Framework 中进行级联删除,但请确保在 SQL 中进行设置,然后确保从 EDMX 文件的数据源进行更新。特别是 make sure CSDL part has the following :
<Association Name="FK_ItemChildren_Item">
<End Type="Model.Item" Role="Item" Multiplicity="1">
<OnDelete Action="Cascade"></OnDelete>
</End>
<End Type="Model.ItemChildren" Role="ItemChildren"
Multiplicity="*">
</End>
</Association>

关于.net - 使用 .Net Entity Framework 问题删除具有子关系的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2613851/

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