1

我正在使用 Entity Framework 4.0 访问具有唯一列约束的表中的数据。如果违反了约束,当我调用 SaveChanges() 时会发生异常,正如预期的那样。我的问题是我是否应该首先允许抛出异常。我也可以进行选择以避免插入重复的数据(我假设事务是必要的)。

在这种情况下,普遍接受的最佳实践是什么?

4

1 回答 1

4

避免异常通常是一个好主意 - 抛出异常是一项相当复杂且耗费时间和资源的操作。因此,如果您可以轻松检查是否已经存在唯一键值,那么我可能会这样做。假设您在数据库级别对该列有一个唯一索引或唯一约束,那么(至少对于 SQL Server)已经在该列上有一个索引,因此检查特定值将相当简单并且不会有很大的性能影响。

另一个问题是:您认为这种情况多久会发生一次?一天一次?每两周一次?一分钟几次?如果它很少发生 - 一次在蓝月亮 - 我不会费心尝试先检查 - 在这种情况下,只需让异常发生并处理它。

所以我想这真的是首先检查的成本有多高,以及它多久发生一次?如果您可以很容易地检查它-> 一定要这样做!但是,如果这是一个相当复杂的检查操作,并且很少发生,那么只需处理异常即可。

于 2010-10-31T08:02:18.113 回答