EF6 объединяет вложенные сущности в столбце, отличном от столбца первичного ключа - PullRequest
0 голосов
/ 01 марта 2019

Я использую Entity Framework 6 и у меня довольно оригинальный вопрос, у меня есть древовидная структура, такая как:

public TreeNode
{
    public int Id { get; set; }
    public int ExternalId { get; set; } // <-- this here is the join key
    public TreeNode ParentNode { get; set; }
    public int ParentNodeId { get; set; }
    public ICollection<TreeNode> ChildrenNodes { get; set; } // <-- adding this
}

По какой-то причине старая реализация, которая уже полна данных и не может быть легко измененаиспользует ExternalId вместо Id , чтобы соединить Родителя и Дочернего.Теперь я хотел бы добавить свойство навигации, чтобы иметь возможность включать () все дочерние элементы каждого узла при извлечении из базы данных, но если я добавлю свободную конфигурацию, например:

        HasMany(sn => sn.ChildrenNodes)
            .WithOptional(sn => sn.ParentNode)
            .HasForeignKey(sn => sn.ParentNodeId);

Это, очевидно, объединит ParentNodeId для Id , а не ExternalId

Есть ли в EF6 способ переопределить основной идентификатор отношения?

...