C# EF代码优先-使用InverseProperty时如何添加外键属性?

C# EF代码优先-使用InverseProperty时如何添加外键属性?,c#,entity-framework,code-first,C#,Entity Framework,Code First,我有下面定义的代码优先模型 项目和团队成员之间存在两种关系: 多对多-团队成员可以处理许多项目。项目可以有许多团队成员。 一对多-项目始终有一名团队成员作为经理 public class Project { public Guid ProjectId { get; set; } [InverseProperty("ManagedProjects"), Required] public virtual TeamMember Manager { get; set; } //

我有下面定义的代码优先模型

项目和团队成员之间存在两种关系:

多对多-团队成员可以处理许多项目。项目可以有许多团队成员。 一对多-项目始终有一名团队成员作为经理

public class Project
{
    public Guid ProjectId { get; set; }

    [InverseProperty("ManagedProjects"), Required]
    public virtual TeamMember Manager { get; set; } // 2

    public virtual List<TeamMember> TeamMembers { get; set; } // 1
}

public class TeamMember
{
    public Guid TeamMemberId { get; set; }

    public virtual List<Project> Projects { get; set; } // 1

    [InverseProperty("Manager")]
    public virtual List<Project> ManagedProjects { get; set; } // 2
}
我需要为经理扩展一个带有外键属性的项目,但我想不出怎么做

public Guid ManagerId { get; set; } // 2
[InverseProperty("ManagedProjects")]
public virtual TeamMember Manager { get; set; } // 2
上面的代码不起作用,因为它只是在项目表中生成一个ManagerId字段。我尝试过不同的外键组合,但没有任何运气


有什么建议吗?

下一个代码应该为多对多创建联接表,“项目”表将在此表上具有外键

public class Project
{
    public Guid ProjectId { get; set; }

    public virtual TeamMember Manager { get; set; } // 2

    [InverseProperty("Projects")]
    public virtual List<TeamMember> TeamMembers { get; set; } // 1
}

public class TeamMember
{
    public Guid TeamMemberId { get; set; }

    [InverseProperty("TeamMembers")]
    public virtual List<Project> Projects { get; set; } // 1

    [InverseProperty("Manager")]
    public virtual List<Project> ManagedProjects { get; set; } // 2
}

我认为如果没有联接表,就不可能有多对多关系。

我的模型已经为多对多关系1生成了联接表。生成的表实际上看起来与预期的一样。问题是,我想要一对多关系2的外键属性。无论我做什么,我都无法将其映射到Manager\u TeamMemberId字段。看一看传统的关系。
public class Project
{
    public Guid ProjectId { get; set; }

    public virtual TeamMember Manager { get; set; } // 2

    [InverseProperty("Projects")]
    public virtual List<TeamMember> TeamMembers { get; set; } // 1
}

public class TeamMember
{
    public Guid TeamMemberId { get; set; }

    [InverseProperty("TeamMembers")]
    public virtual List<Project> Projects { get; set; } // 1

    [InverseProperty("Manager")]
    public virtual List<Project> ManagedProjects { get; set; } // 2
}