相关疑难解决方法(0)

SQL Server中的唯一密钥冲突 - 假设错误2627是否安全?

我需要UNIQUE通过我正在开发的C#应用​​程序以特殊方式捕获对约束的违反.可以安全地假设它Error 2627总是对应于这种违规行为,以便我可以使用

if (ThisSqlException.Number == 2627)
{
    // Handle unique constraint violation.
}
else
{
    // Handle the remaing errors.
}
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 unique-constraint

68
推荐指数
2
解决办法
6万
查看次数

如何使用EF6和SQL Server捕获UniqueKey Violation异常?

我的一个表有一个唯一的密钥,当我尝试插入一个重复的记录时,它会按预期抛出异常.但我需要区分唯一的密钥异常,以便我可以为唯一的密钥约束违规自定义错误消息.

我发现所有的解决方案在网上提出投ex.InnerExceptionSystem.Data.SqlClient.SqlException和检查,如果Number属性等于2601或2627,如下所示:

try
{
    _context.SaveChanges();
}
catch (Exception ex)
{
    var sqlException = ex.InnerException as System.Data.SqlClient.SqlException;

    if (sqlException.Number == 2601 || sqlException.Number == 2627)
    {
        ErrorMessage = "Cannot insert duplicate values.";
    }
    else
    {
        ErrorMessage = "Error while saving data.";
    }
}
Run Code Online (Sandbox Code Playgroud)

但问题是,铸造ex.InnerExceptionSystem.Data.SqlClient.SqlException原因无效的转换错误,因为ex.InnerException实际上是一个类型的System.Data.Entity.Core.UpdateException,不是System.Data.SqlClient.SqlException.

上面的代码有什么问题?如何捕获Unique Key Constraint违规?

c# sql-server exception-handling unique-key entity-framework-6

44
推荐指数
5
解决办法
4万
查看次数

如何从SQL Server 2008错误代码中识别主键重复?

我想知道如何从C#中的SQL Server错误代码中识别主键重复错误.

作为一个例子,我有一个C#表单将数据输入到SQL Server数据库中,当数据输入时发生错误时,如何从异常中识别出错误的原因?

c# sql-server entity-framework

18
推荐指数
2
解决办法
3万
查看次数

2
推荐指数
1
解决办法
9836
查看次数

在lock语句中使用async

我使用 ASP.NET Core Identity,通过 Jmeter 应用程序,我向我的 Web 应用程序发送多个请求以创建用户,它使用同一电子邮件创建了多个用户,尽管我的RequireUniqueEmailtrue

services.AddIdentity<User, Role>(identityOptions =>
{
    identityOptions.User.RequireUniqueEmail = true;
});
Run Code Online (Sandbox Code Playgroud)

当我一一发送请求时,一切正常,并在这段代码中给我重复的电子邮件错误

var result = await _userManager.CreateAsync(userToCreate, userPassword);
Run Code Online (Sandbox Code Playgroud)

但是当我使用 Jmeter 发送多个请求时,上面的代码无法处理重复的电子邮件,并且在 Jmeter 请求完成后,我打开 SQL Server,我看到至少创建了 10 条具有相同电子邮件的记录。我搜索了这个问题并得到了这个解决方案Using lock

private static readonly object lockObj = new object();
lock(lockObj)
{
    var result = await _userManager.CreateAsync(userToCreate, userPassword);
}
Run Code Online (Sandbox Code Playgroud)

但它给了我错误并说“你不能在锁定语句中使用await”,第二个问题是ASP.NET Core Identity没有用于创建的Sync方法。如何在 ASP.NET Core Identity 中创建 create 的同步方法?

c# multithreading thread-synchronization async-await asp.net-core

2
推荐指数
2
解决办法
429
查看次数