Моя модель сущности выглядит следующим образом:
Person, Store и PersonStores Многодетная дочерняя таблица для хранения PeronId, StoreId
Когда я получаю человека, как в приведенном ниже коде, и пытаюсь удалить все StoreLocations, он удаляет их из PersonStores, как упомянуто, но также удаляет его из таблицы Store, что нежелательно.
Кроме того, если у меня есть другой человек с таким же идентификатором магазина, то он не говорит
"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();
}
}