我正在编写一个允许插入到我的数据库中的链接表的方法,我想知道我是否需要首先检查以确保指定的 PK 确实存在于链接表中。在我看来,我可以 100% 依赖数据库来为我强制执行这些 FK 约束,并通过表的 PK 防止重复的表条目,这似乎是合乎逻辑的。事实上,如果数据库无论如何都要检查它们,那么事先检查这些对我来说似乎是非常多余和浪费资源的。另外,请注意我在这里谈论的是非常基本的 RDBMS 概念;即使切换到另一种数据存储机制,我也希望它们同样得到执行。
那么在这种情况下,是否有充分的理由不完全依赖数据库来确保 FK 和 PK 的数据完整性?换句话说:
using (var context = new MyDbContext()) {
try {
context.LinkEntries.Add(new LinkEntry { key1 = x, key2 = y });
return context.SaveChanges() > 0;
}
catch (DbUpdateException) {
// Duplicate, or foreign key violation
return false;
}
}