SQL唯一键插入

Dar*_*bio 5 .net c# entity-framework exception-handling sql-server-2008-r2

我有一个Users表,它对用户名有唯一约束(出于显而易见的原因).

我正在使用EF 4.0 DAL来填充数据库,并在编写CreateUser()方法的过程中.

是吗...

  1. 如果我尝试插入已存在的用户名,最好捕获抛出的SqlException.
  2. 在我尝试将其插入数据库之前,请明确检查用户名?

如果你也可以说明原因,那就太好了!

vcs*_*nes 3

我会先检查该记录是否存在。独特的键约束对于防止应用程序首先允许“坏”数据通过的可能方式很有用,但不是主要目的。当可以避免时,使用异常作为控制流机制(在本例中为验证)通常是一个坏主意。

编辑:为了避免混淆,我并不是说根本没有唯一索引。它应该在那里,但它不应该是检查唯一性的主要手段。