我正在尝试将子实体添加到父实体。孩子是User
,而父母是CheckoutToken
:
插入CheckoutToken:
public async Task Insert(CheckoutToken model)
{
var checkoutToken = new Data.Models.CheckoutToken {
Token = model.Token,
License = _dbContext.Licenses.Single(l => l.Id == model.License.Id),
Created = model.Created,
Expires = model.Expires
};
checkoutToken.UserId = model.User.AspNetUserId;
checkoutToken.User = await _userManager.FindByIdAsync(model.User.AspNetUserId);
await _dbContext.CheckoutTokens.AddAsync(checkoutToken);
await _dbContext.SaveChangesAsync();
}
由于某种原因,我得到了这个异常:
违反主键约束'PK_AspNetUsers'。无法在对象'dbo.AspNetUsers'中插入重复的密钥。重复的键值为(73a0c19b-a7b1-4462-8e82-12be55e47002)。 该声明已终止。
我不明白为什么要尝试创建用户?
答案 0 :(得分:1)
尝试评论此行:
public async Task Insert(CheckoutToken model)
{
var checkoutToken = new Data.Models.CheckoutToken {
Token = model.Token,
License = _dbContext.Licenses.Single(l => l.Id == model.License.Id),
Created = model.Created,
Expires = model.Expires
};
checkoutToken.UserId = model.User.AspNetUserId;
// checkoutToken.User = await _userManager.FindByIdAsync(model.User.AspNetUserId);
await _dbContext.CheckoutTokens.AddAsync(checkoutToken);
await _dbContext.SaveChangesAsync();
}
这是因为您尝试使用与现有数据相同的数据来创建新用户,如果需要将现有用户分配给新实体,则仅分配用户ID而不是完整对象