Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架自引用实体_C#_Entity Framework - Fatal编程技术网

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);
}

下面是对您的问题的一个很好的解释。