C# 实体框架自引用实体
我正在建立一个数据库来存储一个双括号。锦标赛中的每场比赛都有两队相互比赛。在锦标赛的第一轮中,球队是根据种子设定的。在随后的几轮比赛中,两队都是前几场比赛的赢家和输家C# 实体框架自引用实体,c#,entity-framework,C#,Entity Framework,我正在建立一个数据库来存储一个双括号。锦标赛中的每场比赛都有两队相互比赛。在锦标赛的第一轮中,球队是根据种子设定的。在随后的几轮比赛中,两队都是前几场比赛的赢家和输家 public class Match { public int MatchId { get; set; } [Required] public virtual Round Round { get; set; } // other stuff to keep track of match result
public class Match
{
public int MatchId { get; set; }
[Required]
public virtual Round Round { get; set; }
// other stuff to keep track of match results
public virtual Team Team1 { get; set; }
public virtual Team Team2 { get; set; }
[Required]
public TeamSourceType SourceType1 { get; set; }
[Required]
public TeamSourceType SourceType2 { get; set; }
public virtual Match SourceMatch1 { get; set; }
public virtual Match SourceMatch2 { get; set; }
}
对于这两个团队中的每一个,都有一个TeamSourceType,它指示如何确定团队。如果TeamSourceType1/2指定了前一场比赛的赢家或输家,我需要SourceMatch1/2引用要从中获得赢家/输家的比赛。我首先使用实体框架6代码。我尝试了几种注释和流畅映射的组合,但没有任何效果。
我得到“多重性无效…”和“违反了多重性约束…”
我需要什么样的注释和/或流畅的映射才能完成这项工作?我必须在我的一个项目中使用自引用表,下面的方法对我来说很有效。 在我的实体类中,我这样定义了
FK
public int? RelatedMatchId{ get; set; }
public virtual Match SourceMatch1 { get; set; }
然后,我将此规范添加到OnModelCreating
中的modelbuilder
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Match>()
.HasOptional(c => c.SourceMatch1 )
.WithMany()
.HasForeignKey(c => c.RelatedMatchId);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.has可选(c=>c.SourceMatch1)
.有很多
.HasForeignKey(c=>c.RelatedMatchId);
}
下面是对您的问题的一个很好的解释。