EF6在与主键列不同的列上加入自嵌套实体

时间:2019-03-01 09:38:40

标签: c# entity-framework entity-framework-6

我正在使用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 来加入父级和子级。现在,我想添加一个导航属性,以便在从数据库中获取时可以包含每个节点的所有子节点,但是如果我添加Fluent Configuration像这样:

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

这显然会加入 Id 上的 ParentNodeId ,而不是 ExternalId

EF6中是否有任何方法可以覆盖关系的主体ID?

0 个答案:

没有答案