【发布时间】:2016-05-27 15:01:39
【问题描述】:
假设我有一个表,其中包含 PK 列、其他一些列,并且其中一个列必须是唯一的。
哪种方法更适合处理添加新记录的可能性,其中唯一键已经存在?
查询数据库,例如
if (!_db.MyTable.Any(mt => mt.UniqueCode == newRecord.UniqueCode))
_db.MyTable.Add(newRecord);
else //handle response
或者尝试在不检查和处理错误的情况下添加它?例如
try
}
_db.MyTable.Add(newRecord);
}
catch (Exception e)
{
//handle response
}
在第一种方法中,我看到的缺点是它需要 2 次调用 db。 (我离开了_db.SaveChanges()),但我一直觉得最好避免异常。如何?哪一个对性能更好?有没有更好的办法?
【问题讨论】:
-
我认为在您的应用程序中进行异常处理比第二次往返数据库要好。考虑到对数据库的调用涉及的内容(从 EF 内部到数据库内部和通信的所有内容),异常处理听起来并没有那么糟糕。但我认为应该进行性能测量以证明哪个是最好的。
标签: c# sql .net sql-server entity-framework