C# 如何在EF Core中将数据插入数据库时忽略键值?

C# 如何在EF Core中将数据插入数据库时忽略键值?,c#,database,.net-core,entity-framework-core,C#,Database,.net Core,Entity Framework Core,我必须从外部API获取一些数据,并使用EF Core将其插入数据库。作为回应,我得到的数据是相关的。我需要使用id(也来自api)在这些实体上创建一些关系。下面我附上负责创建这些关系的方法的代码段: private IList<LeagueEntity> CombineLeaguesWithGames(IList<LeagueEntity> leagues, IList<GameEntity> games) { if (

我必须从外部API获取一些数据,并使用EF Core将其插入数据库。作为回应,我得到的数据是相关的。我需要使用id(也来自api)在这些实体上创建一些关系。下面我附上负责创建这些关系的方法的代码段:

private IList<LeagueEntity> CombineLeaguesWithGames(IList<LeagueEntity> leagues,
        IList<GameEntity> games)
    {
        if (leagues != null && games != null)
        {
            foreach (var league in leagues)
            {
                league.Games = games.Where(g => g.LeagueId == league.LeagueId).ToList();

                foreach (var team in league.Teams)
                {
                    team.HomeGames = games.Where(g => g.HomeTeam.TeamId == team.TeamId).ToList();
                    team.AwayGames = games.Where(g => g.AwayTeam.TeamId == team.TeamId).ToList();
                    team.TeamId = 0;
                }

                league.LeagueId = 0;
            }

            foreach (var game in games)
            {
                game.GameId = 0;
                game.HomeTeam = null; // to avoid repetitions
                game.AwayTeam = null;
            }
        }

        return leagues;
    }
私人IList将电子竞技与游戏相结合(IList联赛,
(国际在线游戏)
{
如果(联盟!=null&&games!=null)
{
foreach(联盟中的var联盟)
{
league.Games=Games.Where(g=>g.LeagueId==league.LeagueId.ToList();
foreach(联盟中的var团队。团队)
{
team.HomeGames=games.Where(g=>g.HomeTeam.TeamId==team.TeamId.ToList();
team.AwayGames=games.Where(g=>g.AwayTeam.TeamId==team.TeamId.ToList();
team.TeamId=0;
}
LeagueId=0;
}
foreach(游戏中的var游戏)
{
game.GameId=0;
game.HomeTeam=null;//避免重复
game.AwayTeam=null;
}
}
返回联盟;
}

正如您所注意到的,在将每个实体的id插入数据库之前,我必须将其设置为0。原因是,我无法向表中插入显式键值。我真的不喜欢这个解决方案,有没有更优雅的方法在插入之前忽略id值,让数据库在保存更改时找到它??sql脚本“SET IDENTITY\u INSERT…ON/OFF”不适合我的问题,因为一次只能打开一个表的IDENTITY INSERT,我需要插入相关数据

是否有任何原因您不只是创建了标识列作为您自己的internalID的PK,并将提供的ID保存在单独的列中,例如ExternalId?是否有任何原因您不只是创建了标识列作为您自己的internalID的PK,并将提供的ID保存在单独的列中,像外部的东西?