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