【发布时间】:2019-05-07 04:47:46
【问题描述】:
将记录插入子表时出现以下错误,为什么当我要求 Entity Framework Core 将记录插入子表(关键字)时,它试图将记录插入父表(IdentityUser 表)桌子)?
堆栈跟踪:
An unhandled exception occurred while processing the request.
SqlException: Violation of PRIMARY KEY constraint 'PK_IdentityUser'. Cannot insert duplicate key in object 'dbo.IdentityUser'. The duplicate key value is (39b72c3a-b5bf-43e4-84f9-5cddbe79f6e3).
The statement has been terminated.
型号:
public class Keyword
{
public Keyword() { }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int KeywordId { get; set; }
public IdentityUser User { get; set; }
public string Value { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
}
将记录保存到关键字表的代码:
var keywords = new List<Keyword>();
var identityUser = await UserManager.GetUserAsync(User);
foreach (var keywordString in keywordsThatNeedToBeSaved)
{
keywords.Add(new Keyword()
{
User = identityUser,
Value = keywordString
});
}
ScrubberDbContext.Keywords.AddRange(keywords);
await ScrubberDbContext.SaveChangesAsync();
【问题讨论】:
-
identityUser存在于数据库中,当您想保存关键字时将其添加到关键字实体中,Entityframework 再次保存identityUser并且存在然后它有错误,您应该在您的关键字实体,然后在要保存关键字实体时添加用户 ID。
标签: c# entity-framework asp.net-core entity-framework-core