这是一个直接的需求,但我想知道您在性能和设计方面有什么建议。
当你需要做某事时,什么会更快更好?检查你是否可以,如果你能做到。或者直接试一试,万一失败,你就明白了。
这是我的特殊情况:我有一个将使用 foreach 填充的数据库表。该表有一个不能在表中重复的主键。
所以..
foreach(object in Objects)
{
bool exists = //SQL SELECT to check if exists.
if (exists == false)
{
//SQL INSERT
return INSERTED
}
else
{
return failed
}
}
或者
foreach(object in Objects)
{
try
{
//SQL INSERT
return INSERTED
}
catch
{
return FAILED
}
}
我想知道这在其他方面的最佳实践,比如在没有覆盖属性的情况下创建文件并管理 execpiton 或在尝试之前检查文件是否存在。
更新: 根据答案,我知道我不应该为每个插入进行交易,因为性能。我应该做一个批量插入。在我的代码中,我有这样的东西
//SQL Start Transaction
foreach
{
//SQL INSERT
}
//SQL Commit transaction
我的问题是关于事务内部的,如果我应该在插入之前检查还是只是尝试。