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_Insert_Repository - Fatal编程技术网

C# 如何通过具有多个关系的上下文将实体插入数据库?

C# 如何通过具有多个关系的上下文将实体插入数据库?,c#,entity-framework,insert,repository,C#,Entity Framework,Insert,Repository,参数中的锦标赛实体包含大量数据 实体有许多组 entity.Groups有许多团队 entity.Groups.Teams有许多玩家 组和团队是自动生成的,不在数据库中玩家已为数据库所知 请注意,游戏、体裁和锦标赛类型都可以很好地工作 我的问题是,在关闭上下文之后,它将创建多个组、团队和玩家,并且多次添加相同的实体 有什么想法吗,伙计们?我想不出这个 干杯 能否为这些实体附加DB映射配置?如果映射正确,调用context.Tournaments.Add(entity);和context.Sav

参数中的锦标赛实体包含大量数据

实体
有许多

entity.Groups
有许多
团队

entity.Groups.Teams
有许多
玩家

团队
是自动生成的,不在数据库中<代码>玩家已为数据库所知

请注意,游戏、体裁和锦标赛类型都可以很好地工作

我的问题是,在关闭上下文之后,它将创建多个组、团队和玩家,并且多次添加相同的实体

有什么想法吗,伙计们?我想不出这个

干杯


能否为这些实体附加DB映射配置?如果映射正确,调用context.Tournaments.Add(entity);和context.SaveChanges();应该足够了。嗨@raderick,在锦标赛实体中我有一个公共虚拟列表组{get;set;},在组实体中也是这样。我没有使用fluent API,其他实体也是如此。团队、团队和玩家如何使用实体属性?您是否在单独的上下文中加载它们,然后传递给该方法?在这种情况下,它们不会附加到您的“DragonLairContext上下文”,并且在保存锦标赛实体时会再次附加,因为此方法上下文没有它们的轨迹。我从Ui获取它们。我附加entity.game、entity.game.genre和tournament.tournamenttype,因为它们已经在数据库中。球员也在数据库中,但我不知道如何附加他们。
public Tournament Create(Tournament entity)
{
    using (var context = new DragonLairContext())
    {
        context.Games.Attach(entity.Game);
        context.Genres.Attach(entity.Game.Genre);
        context.TournamentTypes.Attach(entity.TournamentType);
        context.Tournaments.Add(entity);
        context.SaveChanges();
    }
    return entity;
}