Entity Framework: Зависимости из-за ограничений внешнего ключа - PullRequest
3 голосов
/ 06 июля 2011

Я искал решение и не могу найти хорошую информацию. Много документации EF очень устарело. Вот моя проблема.

Если я добавляю дочернего элемента к родителю через свойство навигации ParentID, все работает нормально.

Если я добавляю ребенка к родителю через список «Дети», и этот ребенок уже существует, я получаю следующее исключение:

DbUpdateException: невозможно определить действительный заказ для зависимых операции. Зависимости могут существовать из-за к ограничениям внешнего ключа, модель требования, или сгенерированный магазином значения.

Если я добавляю ребенка к родителю через список «Дети», и ребенок является новым (его также необходимо сохранить), я получаю следующее исключение:

DbUpdateConcurrencyException: магазин обновить, вставить или удалить оператор повлияло на неожиданное количество строк (0). Объекты могут быть изменены или удален, так как объекты были загружены. Обновите записи ObjectStateManager.

Node.cs

public class Node
{
  public long ID { get; private set; }
  public long? ParentID { get; set; }
  public List<Node> Children { get; set; }
}

Соответствующий DbContext.cs

protected override void OnModelCreating(DbModelBuilder mb)
{
  mb.Entity<Node>()
    .HasMany(c => c.Children)
    .WithOptional()
    .HasForeignKey(c => c.ParentID);
}

Ответы [ 2 ]

0 голосов
/ 07 апреля 2013

У меня была та же проблема, но я не уверен, что это лучшее решение, но я попытался вызвать SaveChanges. context.SaveChanges (), а затем добавьте дочерний элемент в только что созданный объект, и это сработало.

0 голосов
/ 06 июля 2011

Вы пытались сделать свою собственность детей

public virtual ICollection<Node> вместо List<Node>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...