我刚开始使用EF代码,所以我在这个主题中完全是初学者.
我想在团队和比赛之间建立关系:1场比赛= 2队(主场,客场)和结果.我认为创建这样的模型很容易,所以我开始编码:
public class Team
{
[Key]
public int TeamId { get; set;}
public string Name { get; set; }
public virtual ICollection<Match> Matches { get; set; }
}
public class Match
{
[Key]
public int MatchId { get; set; }
[ForeignKey("HomeTeam"), Column(Order = 0)]
public int HomeTeamId { get; set; }
[ForeignKey("GuestTeam"), Column(Order = 1)]
public int GuestTeamId { get; set; }
public float HomePoints { get; set; }
public float GuestPoints { get; set; }
public DateTime …Run Code Online (Sandbox Code Playgroud) 我在使用 EF 代码优先创建数据库时遇到问题。我有一个实体播放器和一个实体炸船。
每个友谊都涉及两个玩家。其中一名玩家是友谊的发送者,另一位是友谊的接收者。
这是我的实体:
播放器.cs
public class Player
{
public int PlayerId { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Email { get; set; }
[InverseProperty("Receiver")]
public virtual List<Friendship> FriendshipsIncoming { get; set; }
[InverseProperty("Sender")]
public virtual List<Friendship> FriendshipsOutgoing { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
友谊.cs
public class Friendship
{
public int FriendshipId { get; set; }
public int SenderId { get; set; }
public int ReceiverId { get; set; }
[ForeignKey("Sender")]
public …Run Code Online (Sandbox Code Playgroud) 这个问题很容易复制,但我不知道解决它的正确方法。
例如,您有一个Team类和一个Game类。每场比赛有两支球队。使用标准 OOTB EF 命名约定时,在运行dotnet ef database update时会遇到以下错误(dotnet ef migrations add将正常运行)。
课程:
public class Team
{
[Required]
public int TeamID { get; set; }
public string TeamName { get; set; }
}
public class Game
{
[Required]
public int GameID { get; set; }
public int Team1ID { get; set; }
public Team Team1 { get; set; }
public int Team2ID { get; set; }
public Team Team2 { get; set; } …Run Code Online (Sandbox Code Playgroud) 我有一个与这里发布的问题类似的问题: Entity Framework Code First - Twoforeign Keys from same table,但是它非常旧,不适用于 Core,我无法得到适合我的建议。
基本上,我正在尝试创建一个固定表,其中有两个指向团队表的外键。一场比赛由主队和客队组成。拥有可为空的字段不是一种选择。
考虑一场有两支球队的比赛。
public class Fixture
{
public int Id { get; set; }
public Team HomeTeam { get; set; }
public int HomeTeamId { get; set; }
public Team AwayTeam { get; set; }
public int AwayTeamId { get; set; }
public virtual Team HomeTeam { get; set; }
public virtual Team AwayTeam { get; set; }
}
public class Team
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id …Run Code Online (Sandbox Code Playgroud)