Сущность, которая содержит себя как ICollection - PullRequest
2 голосов
/ 14 февраля 2012

Использование Entity Framework. Простой класс Page с древовидной иерархией.

public class Page
{
    public int Id { get; set; }
    //...
    public int ParentId { get; set; } //removing this solves the problem, but I would like to keep this line
    public virtual Page Parent { get; set; }
    public virtual ICollection<Page> SubPages { get; set; }
}

Выдает ошибку при попытке добавить объект и SaveChanges:

Невозможно определить основной конец отношения Models.Page_Parent. Несколько добавленных объектов могут иметь один и тот же первичный ключ.

Я примерно понимаю проблему, но не знаю, как ее исправить.

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Сделать свойство ParentId обнуляемым.Корневой элемент не будет иметь родителя.Используйте беглую конфигурацию, как показано в ответе @ Jayantha.

public class Page
{
    public int Id { get; set; }
    //...
    public int? ParentId { get; set; }  like to keep this line
    public virtual Page Parent { get; set; }
    public virtual ICollection<Page> SubPages { get; set; }
}
1 голос
/ 14 февраля 2012

Вы пытались определить отношения?

this.HasRequired(page => t.Parent ).WithMany(t => t.SubPages).HasForeignKey(d => d.ParentId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...