4

我正在编写一个允许插入到我的数据库中的链接表的方法,我想知道我是否需要首先检查以确保指定的 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;
    }
}
4

1 回答 1

2

关系数据库将强制引用完整性 - 假设您已正确设置外键。

1)这将确保key1key2实际指向主表中的行。

2) 如果您还想确保链接表中只能存在具有特定外键对的一行,则必须在数据库中对这些列添加唯一约束。

如果你使用这对外键作为你的链接表主键,你应该没问题。

于 2013-04-10T13:51:58.783 回答