EntityFramework - 组合键和外键
EntityFramework - Composite keys and foreign key
我正在做一个项目,我正在使用 Entity Framework 代码优先方法。我的第一个模型,Player,它的 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;}
}
class 统计数据:
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;}
}
玩家 class 与 class 统计数据具有一对一的关系,其中统计数据 class 对玩家 class 是可选的,但是玩家 class 是数据 class 所必需的。
我的问题是,当我使用 Entity Framework 创建新迁移并更新数据库时,它会为 Stat table.
创建 5 列
- 编号
- 姓名
- TeamId
- Player_Name
- Player_TeamId
class 统计中的属性 Name 和 TeamId 应该只用于设置外键的值,不应在 table 中创建列。有没有办法将 属性 名称映射到生成的列 "Player_Name" 并将 TeamId 映射到 "Player_TeamId"?
您需要在统计中引用您的外键 class:
[ForeignKey("Player")]
public string Name { get; set;}
[ForeignKey("Player")]
public string TeamId { get; set;}
我正在做一个项目,我正在使用 Entity Framework 代码优先方法。我的第一个模型,Player,它的 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;}
}
class 统计数据:
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;}
}
玩家 class 与 class 统计数据具有一对一的关系,其中统计数据 class 对玩家 class 是可选的,但是玩家 class 是数据 class 所必需的。
我的问题是,当我使用 Entity Framework 创建新迁移并更新数据库时,它会为 Stat table.
创建 5 列- 编号
- 姓名
- TeamId
- Player_Name
- Player_TeamId
class 统计中的属性 Name 和 TeamId 应该只用于设置外键的值,不应在 table 中创建列。有没有办法将 属性 名称映射到生成的列 "Player_Name" 并将 TeamId 映射到 "Player_TeamId"?
您需要在统计中引用您的外键 class:
[ForeignKey("Player")]
public string Name { get; set;}
[ForeignKey("Player")]
public string TeamId { get; set;}