ama*_*eur 7 c# sql sql-server asp.net
我正在调用一个存储过程,它将数据从c#插入到sql server数据库中.我对表有很多限制,例如唯一列等.目前我有以下代码:
try
{
// inset data
}
catch (SqlException ex)
{
if (ex.Message.ToLower().Contains("duplicate key"))
{
if (ex.Message.ToLower().Contains("url"))
{
return 1;
}
if (ex.Message.ToLower().Contains("email"))
{
return 2;
}
}
return 3;
}
Run Code Online (Sandbox Code Playgroud)
在C#中插入数据之前检查列是否是唯一的等更好的做法,还是在存储过程中或发生异常并按上述方法处理?我不是上述的粉丝,但在这个领域寻找最佳实践.
我将数据库约束视为最后的手段.(即,它们应该作为维护数据完整性的备份方式存在于您的模式中.)但是我想在您尝试将数据保存在数据库中之前,数据应该真正有效.如果没有其他原因,那么因为提供有关无效输入的反馈是一个UI问题,并且数据有效性错误实际上不应该每次都在整个层堆栈中上下浮动.
此外,您希望对数据的形状进行多种断言,这些断言无法轻松地使用约束表达.(例如,订单的状态转换."订单只能SHIPPED来自PAID"或更复杂的情况.)也就是说,您需要使用涉及基于过程语言的检查,这些检查会复制更多的业务逻辑,以及然后让那些报告某种错误代码,并在您的应用程序中包含更多复杂性,只是为了在模式定义中进行所有数据验证.
验证本身很难放在应用程序中,因为它既涉及UI 又与模型架构相关联,但我转向在UI附近进行操作.
| 归档时间: |
|
| 查看次数: |
7751 次 |
| 最近记录: |