以下是使用Entity Framework Core进行插入示例的代码:
public async Task CreateAsync(User user)
{
try
{
_context.Users.Add(user);
await _context.SaveChangesAsync();
return Result.Success();
}
catch(DbUpdateException ex)
{
if(ex.InnerException is SqlException sqlEx && sqlEx.Number == 2627)
return Result.Failure("User already exists.");
else
return Result.Failure(ex.Message);
}
}
在此示例中,如果插入操作违反了主键约束,则会引发DbUpdateException。在这种情况下,我们检查异常的内部异常是否为SqlException,并检查它的Number是否为2627(由SQL Server返回的主键约束错误代码)。如果是,则表示我们正在尝试使用重复的主键值创建新的记录。我们可以捕获此异常并返回错误消息,指示用户已经存在。