C# 我想使用一个表ID来创建一个不同的表,该表首先使用两个表ID、实体框架和代码

C# 我想使用一个表ID来创建一个不同的表,该表首先使用两个表ID、实体框架和代码,c#,sql,entity-framework,database-migration,code-first,C#,Sql,Entity Framework,Database Migration,Code First,这只是我做得很快,但它显示了我希望它是怎样的。OBS数据库图表表图片。因此,我希望团队表与传输表有两种关系(OldTeamId,NewTeamId),这可能吗 当我尝试按现在的样子执行添加迁移时,我收到一条消息 无法确定“列表”类型的导航属性“Team.OldTeams”表示的关系。手动配置关系,或使用“[NotMapped]”属性或使用“OnModelCreating”中的“EntityTypeBuilder.ignore”忽略此属性 代码: 公共类传输 { 公共int Id{get;set

这只是我做得很快,但它显示了我希望它是怎样的。OBS数据库图表表图片。因此,我希望
团队
表与
传输
表有两种关系(
OldTeamId
NewTeamId
),这可能吗

当我尝试按现在的样子执行
添加迁移
时,我收到一条消息

无法确定“列表”类型的导航属性“Team.OldTeams”表示的关系。手动配置关系,或使用“[NotMapped]”属性或使用“OnModelCreating”中的“EntityTypeBuilder.ignore”忽略此属性

代码:

公共类传输
{
公共int Id{get;set;}
public DateTime TransferDate{get;set;}
公共播放器播放者{get;set;}
公共字符串播放器ID{get;set;}
公共团队OldTeam{get;set;}
public int OldTeamId{get;set;}
公共团队NewTeam{get;set;}
public int NewTeamId{get;set;}
}
公开课小组
{
公共团队()
{
锦标赛=新列表();
Players=新列表();
OldTeams=新列表();
NewTeams=新列表();
}
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串说明{get;set;}
公共字节[]TeamLogo{get;set;}
公共日期时间{get;set;}
公共国家国家{get;set;}
public int CountryId{get;set;}
公开列表锦标赛{get;set;}
公共列表玩家{get;set;}
公共列表{get;set;}
公共列表NewTeams{get;set;}
}
公共类GamepediaContext:DbContext
{
公共数据库集国家{get;set;}
公共数据库集映射{get;set;}
公共DbSet播放器{get;set;}
公共DbSet团队{get;set;}
公共DbSet TeamPlayers{get;set;}
公共DbSet锦标赛{get;set;}
公共DbSet TournamentMaps{get;set;}
公共数据库集传输{get;set;}
}
[1]: https://i.stack.imgur.com/Y8Set.png

使用foreignKey属性

public class Transfer
{
    public int Id { get; set; }
    public DateTime TransferDate { get; set; }
    public Player ThePlayer { get; set; }
    public string PlayerId { get; set; }   
    public Team OldTeam { get; set; }
    [ForeignKey("OldTeam")]
    public int OldTeamId { get; set; }
    public Team NewTeam { get; set; }
    [ForeignKey("NewTeam")]
    public int NewTeamId { get; set; }
}

我让它工作,我添加了这行代码。我把脚本“onDelete”从Cascade改为NoAction

modelBuilder.Entity<Team>().HasMany(m => m.OldTeams).WithOne(m => m.OldTeam).HasForeignKey(m => m.OldTeamId);
        modelBuilder.Entity<Team>().HasMany(m => m.NewTeams).WithOne(m => m.NewTeam).HasForeignKey(m => m.NewTeamId);
modelBuilder.Entity();
modelBuilder.Entity();

您是否在数据库中创建了两个外键?感谢您的回答Peter,我尝试了这一点,但当我尝试执行commando Add迁移时,仍然收到失败消息=无法确定“List”类型的导航属性“Team.OldTeam”所表示的关系。手动配置关系,或使用“[NotMapped]”属性或使用“OnModelCreating”中的“EntityTypeBuilder.ignore”忽略此属性。如果两个实体之间存在多个关系,则不必为每个导航属性指定外键。在类团队中,在类型为
List
的两个导航属性的每个属性上添加外键属性,并使用将映射到的列名,如
[ForeignKey(“OldTeamId”)]public List OldTeams{get;set;}[ForeignKey(“OldTeamId”)]public List NewTeams{get;set;}
@byteArrayJakeah好的,是的,我让它工作了,所以谢谢你的帮助,彼得!
modelBuilder.Entity<Team>().HasMany(m => m.OldTeams).WithOne(m => m.OldTeam).HasForeignKey(m => m.OldTeamId);
        modelBuilder.Entity<Team>().HasMany(m => m.NewTeams).WithOne(m => m.NewTeam).HasForeignKey(m => m.NewTeamId);