Отображения один-ко-многим в одном объекте в EF First code - PullRequest
3 голосов
/ 19 февраля 2011

У меня есть 2 класса:

public class GroupType
{
    [Key]
    public decimal GroupTypeID   { get; set; }
    public string  Title         { get; set; }

    public virtual ICollection<Group> Groups { get; set; }
}

и

public class Group
{
    [Key]
    public decimal          GroupID          { get; set; }
    public string           Title            { get; set; }
    public decimal?         GroupParentID    { get; set; }
    public decimal          GroupTypeID      { get; set; }
    public string           FileName         { get; set; }
    public string           GroupCode        { get; set; }

    public virtual ICollection<GroupType> GroupTypes { get; set; }
    public virtual ICollection<Group> MainGroups { get; set; }
}

, когда я отлаживаю проект, я получаю эту ошибку:

"Неверное имя столбца'GroupGroupID'. "** и ** Свойство навигации 'MainGroups' объекта 'Parand.DataAccess.Group' не может быть обратным.

Я хочу определить дерево группы ( n слои групп)

Как мне это сделать?

1 Ответ

2 голосов
/ 19 февраля 2011

Это создаст самосвязанную ассоциацию в сущности Group:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Group>()
                .HasMany(g => g.MainGroups)
                .WithOptional()
                .HasForeignKey(p => p.GroupParentID);
}

Ассоциация "многие ко многим" между Group и GroupType будет создана с использованием таблицы соединений, поэтому вам следует удалитьGroupTypeID свойство от объекта Group, так как оно будет рассматриваться просто как скалярное свойство, а не как внешний ключ для этой ассоциации.

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