gpt4 book ai didi

entity-framework - EF 4.0 - 多对多关系 - 删除问题

转载 作者:行者123 更新时间:2023-12-04 22:52:24 26 4
gpt4 key购买 nike

我的实体模型如下:
Person , Store 和 PersonStores 多对多子表来存储 PeronId,StoreId
当我在下面的代码中找到一个人并尝试删除所有 StoreLocations 时,它会如上所述从 PersonStores 中删除它们,但也会从 Store Table 中删除它,这是不受欢迎的。
此外,如果我有另一个拥有相同商店 ID 的人,则它不会说"The DELETE statement conflicted with the REFERENCE constraint \"FK_PersonStores_StoreLocations\". The conflict occurred in database \"EFMapping2\", table \"dbo.PersonStores\", column 'StoreId'.\r\nThe statement has been terminated"因为它试图删除 StoreId 但该 StoreId 用于另一个 PeronId 并因此引发异常。

 Person p = null;
using (ClassLibrary1.Entities context = new ClassLibrary1.Entities())
{
p = context.People.Where(x=> x.PersonId == 11).FirstOrDefault();
List<StoreLocation> locations = p.StoreLocations.ToList();
foreach (var item in locations)
{
context.Attach(item);
context.DeleteObject(item);
context.SaveChanges();
}
}

最佳答案

问题是您实际上并不想删除商店本身,而只是删除商店与人之间的关系。试试这样的:

 Person p = null;
using (ClassLibrary1.Entities context = new ClassLibrary1.Entities())
{
p = context.People.Where(x=> x.PersonId == 11).FirstOrDefault();
p.StoreLocations.Clear();
context.SaveChanges();
}

这将使您的人从他的商店列表中删除所有商店,并保存更改。请注意,您可能需要在 using 的第一行上使用 include 语句。阻止,取决于您的 ObjectContext已配置。

关于entity-framework - EF 4.0 - 多对多关系 - 删除问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2738270/

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