Я использую 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 способ переопределить основной идентификатор отношения?