EntityFramework - 复合键和外键

时间:2018-04-04 14:59:27

标签: c# entity-framework foreign-keys composite-primary-key

我正在开发一个项目,我正在使用Entity Framework和代码第一种方法。我的第一个模型,玩家,有两个字符串作为其ID(我没有选择它,我知道它是一个糟糕的方法):

public class Player()
{

    [Key, Column(Order=0)]
    public string Name { get; set;}

    [Key, Column(Order=1)]
    public string TeamId { get; set;}

    public Stat PlayerStat { get; set;}
}

班级统计:

public class Stat()
{

    [Key]
    public int Id { get; set;}

    // This property should set the name id of the player
    public string Name { get; set;}

    // This property should set the teamId of the player
    public string TeamId{ get; set;}

    [Required]
    public Player Player { get; set;}
}

玩家类与类stat具有一对一的关系,其中Stat类对于玩家类是可选的,但是stat类需要玩家类。

我的问题是,当我使用Entity Framework创建新迁移并更新数据库时,它会为Stat表创建5列。

  • 编号
  • 名称
  • TeamId
  • PLAYER_NAME
  • Player_TeamId

类stat中的属性Name和TeamId应仅用于设置外键的值,并且不应在表中创建列。有没有办法将属性Name映射到生成的列“Player_Name”,将TeamId映射到“Player_TeamId”?

1 个答案:

答案 0 :(得分:0)

您需要在Stat类中引用您的外键:

[ForeignKey("Player")]
public string Name { get; set;}

[ForeignKey("Player")]
public string TeamId { get; set;}