我正在使用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?