代码之家  ›  专栏  ›  技术社区  ›  giorgian

分析ASP.NET(MVC)应用程序中的SqlException错误?

  •  0
  • giorgian  · 技术社区  · 15 年前

    而验证可以阻止 SQL 错误,有些情况根本无法避免。我可以想到其中的两个:某列的唯一性和错误的外键:验证不能有效,因为其他方可以在验证之后和db插入之前创建或删除一个对象。所以至少有两个 SQL 会导致用户输入无效的消息的错误。

    SQLException 有一个 Number 属性的错误类型,但我不知道如何找出哪个列被复制或哪些外键是错误的,而不试图解析实际的错误消息文本,这是本地化。

    除了解析错误消息之外,有没有其他方法来识别冒犯列(这意味着至少要严格选择SQL Server的语言并始终使用它)?

    编辑:

    我应该提到我来自RuyunRaRies,方法是:假设DB不存在:没有约束,没有DB强制外键等。 ASP.NET MVC ,我想摆脱rails的偏见,接受db确实存在的事实。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Ash    15 年前

    你肯定这两种情况是绝对不能预防的吗?

    通过使用身份(数据库生成)主键列,可以避免插入上的唯一约束Sql异常。SQL Server将保证该值是唯一的。

    将相关的行插入到由外键链接的表中也是一样的。在主表中插入行之前,首先在每个引用的表中插入一行。使用自动筛选获取每个自动生成主键的值,并将其用作主表中的外键。

    还应该在事务中包装这些单独语句,以确保所有表都被成功插入或没有。在提交事务之前,事务还将这些更改与所有其他并发数据库访问隔离(隐藏)。