Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ошибка - Добавление связи с сущностью, находящейся в состоянии Deleted, не допускается / 4 сообщений из 4, страница 1 из 1
14.09.2018, 18:24
    #39702818
Degun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка - Добавление связи с сущностью, находящейся в состоянии Deleted, не допускается
Entity Framework 6.0 Code First
Создаю сущность и добавляю её в контекст:
Код: c#
1.
2.
TestEntity pNewEntity = new TestEntity();
pNewEntity = DbSet.Add(pNewEntity);


Затем удаляю созданную сущность с помощью кода:
Код: c#
1.
2.
3.
if (Context.Entry(pNewEntity).State == System.Data.Entity.EntityState.Detached) DbSet.Attach(pNewEntity);
DbSet.Remove(pNewEntity);
DbContext.SaveChanges();


На последней строчке DbContext.SaveChanges() получаю исключение:
Добавление связи с сущностью, находящейся в состоянии Deleted, не допускается

Если эту сущность без перезагрузки DbContext попытаться удалить ещё раз, то это исключение уже выдаётся на первой строке, т.е. на проверке Context.Entry(pNewEntity).State.
Если же перезагрузить DbContext, то эта сущность удаляется без ошибок.
В чём причина? Как избежать этого?
...
Рейтинг: 0 / 0
14.09.2018, 18:30
    #39702820
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка - Добавление связи с сущностью, находящейся в состоянии Deleted, не допускается
Degun,
Контекст.Таблица.Add(сущность)
...
Рейтинг: 0 / 0
17.09.2018, 17:06
    #39703768
Degun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка - Добавление связи с сущностью, находящейся в состоянии Deleted, не допускается
Собственно, я так и делаю.
Исследовал тестовый проект и выяснилось следующее. Ошибка
Adding a relationship with an entity which is in the Deleted state is not allowed.
возникает в том случае, если у сущности TestEntity отношение один-ко многим с другой сущностью LinkedEntity:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class TestEntity
{
  [Key]
  public virtual int ID { get; set; }
  public virtual LinkedEntity LinkedEntity { get; set; }
}

public class LinkedEntity
{
  [Key]
  public virtual int ID { get; set; }
  public virtual ICollection<TestEntity> TestEntitys { get; set; }
}


Когда у сущности LinkedEntity убирается свойство навигационное TestEntitys, то ошибка не возникает. Подозреваю, что если у LinkedEntity в списке TestEntitys присутствует ссылка на удалённый объект сущности TestEntity, то ошибка возникает. Как тогда автоматизировать процесс очистки этого навигационного свойства?
...
Рейтинг: 0 / 0
17.09.2018, 19:10
    #39703832
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка - Добавление связи с сущностью, находящейся в состоянии Deleted, не допускается
DegunСобственно, я так и делаю.тогда где в первом вопросе обе сущности и связи?
2. Найдите и сделайте пример двух сущностей один ко многим в интернете.
Это букварь.
Потом вопросы если не работает.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ошибка - Добавление связи с сущностью, находящейся в состоянии Deleted, не допускается / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]