在代码优先实体框架的复合主键中包含外键

本文关键字:复合 包含外 框架 代码 实体 | 更新日期: 2023-09-27 17:56:30

>我有一个名为 Member 的实体,我想为其设置一个主键 MemberIdGroupId 。在这种情况下,GroupId 是实体的主键 Group 。使用下面的代码,外键设置正确,但它不包含为主键的一部分。如何添加外键列以创建复合主键?

public class Member
{
    [Key]
    public string MemberId { get; set; }
    public string MemberName { get; set; }
    public string GroupId { get; set; }
    [ForeignKey("GroupId")]
    public virtual Group Group { get; set; }
}

在代码优先实体框架的复合主键中包含外键

下面是

MSDN 的一个示例。只需对要包含在复合键中的所有属性使用 [Key] 注释,并为这些列添加额外的 [Column(Order=x)] 属性。

public class Member
{
    [Key]
    [Column(Order = 0)]
    public string MemberId { get; set; }
    [Key]
    [Column(Order = 1)]
    public string GroupId { get; set; }
    public string MemberName { get; set; }     
    [ForeignKey("GroupId")]
    public virtual Group Group { get; set; }
}