gpt4 book ai didi

c# - Entity Framework 核心 : Violation of PRIMARY KEY constraint Cannot insert duplicate key in object

转载 作者:行者123 更新时间:2023-12-03 14:01:20 25 4
gpt4 key购买 nike

将记录插入子表时出现以下错误,为什么 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();

enter image description here
enter image description here
enter image description here

最佳答案

将关键字类更改为:

public class Keyword
{
public Keyword() { }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int KeywordId { get; set; }
public int? UserId { get; set; }
[ForeignKey("UserId")]
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()
{
UserId = identityUser.Id,
Value = keywordString
});
}
ScrubberDbContext.Keywords.AddRange(keywords);
await ScrubberDbContext.SaveChangesAsync();

关于c# - Entity Framework 核心 : Violation of PRIMARY KEY constraint Cannot insert duplicate key in object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56015709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com