【发布时间】:2019-03-08 20:50:12
【问题描述】:
我正在尝试使用子实体 GuildMember、Team 和 GuildMemberChallenge 更新父实体 GuildMemberTeam,它也有子实体 GuildMember 和 Challenge,但出现以下内部异常:
内部异常1:SqlException:违反PRIMARY KEY约束 'PK_挑战'。无法在对象“dbo.Challenge”中插入重复键。 重复键值为 (15ae8798-8567-457b-812a-5820cf7843e5)。这 语句已终止。
唯一的新实体是 GuildMemberTeam,因为所有其他实体都已经存在,但这些都被检查并重新创建如下:
public void AddChallenge(Challenge challenge)
{
if (challenge != null)
{
var id = challenge.Id == default(Guid) ? Guid.NewGuid() : challenge.Id;
Challenge = new Challenge(id, challenge.Name, challenge.Phase, challenge.Type, challenge.Star, challenge.Gear, challenge.Level, challenge.Reward);
}
}
这适用于我收到错误的挑战之外的所有其他实体。谁能帮我理解我做错了什么。
【问题讨论】:
-
您正在尝试插入一个新行,其 ID 已存在于数据库中。默认(指导)? Guid.NewGuid() : 挑战.Id;
-
Kristof - 我知道我正在这样做,但我正在对所有其他实体这样做,这很好,只是在这个子实体上
标签: c# sql entity-framework-core